XPTMode mode = cursor->state->mode;
XPTMode mode = outer->state->mode;
XPT_DoInterfaceDescriptor(XPTCursor *cursor, XPTInterfaceDescriptor **idp){    XPTMode mode = cursor->state->mode;    XPTInterfaceDescriptor *id;    int i;    if (mode == XPT_DECODE)        id = PR_NEWZAP(XPTInterfaceDescriptor);    else        id = *idp;    if(!XPT_Do32(cursor, &id->parent_interface) ||       !XPT_Do16(cursor, &id->num_methods)) {             goto error;    }    if (mode == XPT_DECODE)        id->method_descriptors = PR_CALLOC(id->num_methods *                                            sizeof(XPTMethodDescriptor));        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);    }