if(!XPT_Do32(cursor, &id->parent_interface) ||
if (!XPT_Do32(outer, &cursor->offset)) goto error; if(!XPT_DoInterfaceDirectoryEntryIndex(cursor, &id->parent_interface) ||
XPT_DoInterfaceDescriptor(XPTCursor *outer, XPTInterfaceDescriptor **idp){    XPTMode mode = outer->state->mode;    XPTInterfaceDescriptor *id;    XPTCursor curs, *cursor = &curs;    uint32 i, id_sz = 0;    if (mode == XPT_DECODE) {        id = PR_NEWZAP(XPTInterfaceDescriptor);        if (!id)            return PR_FALSE;    } else {        id = *idp;        id_sz = XPT_SizeOfInterfaceDescriptor(id);    }    if (!XPT_MakeCursor(outer->state, XPT_DATA, id_sz, cursor))        goto error;    if(!XPT_Do32(cursor, &id->parent_interface) ||       !XPT_Do16(cursor, &id->num_methods)) {        goto error;    }    if (mode == XPT_DECODE && id->num_methods) {        id->method_descriptors = PR_CALLOC(id->num_methods *                                           sizeof(XPTMethodDescriptor));        if (!id->method_descriptors)            goto error;    }        for (i = 0; i < id->num_methods; i++) {        if (!XPT_DoMethodDescriptor(cursor, &id->method_descriptors[i]))            goto error;       }        if (!XPT_Do16(cursor, &id->num_constants)) {        goto error;    }        if (mode == XPT_DECODE)        id->const_descriptors = PR_CALLOC(id->num_constants *                                           sizeof(XPTConstDescriptor));        for (i = 0; i < id->num_constants; i++) {        if (!XPT_DoConstDescriptor(cursor, &id->const_descriptors[i])) {            goto error;        }    }        return PR_TRUE;    XPT_ERROR_HANDLE(id);    }