pike.git / src / encode.c

version» Context lines:

pike.git/src/encode.c:1441:    EDB(3,    fprintf(stderr, "%*sencode: encoding variant dispatcher\n",    data->depth, ""));       for(k = 0; k < p->num_identifiers; k++) {    other = p->identifiers + k;    if (other->name == id->name) break;    }    if (other >= id) {    /* variant before termination function. */ -  break; +  EDB(3, fprintf(stderr, "%*sVariant before termination function.\n", +  data->depth, "")); +  goto next_identifier_ref;    }    if ((other->identifier_flags & IDENTIFIER_TYPE_MASK) ==    IDENTIFIER_PIKE_FUNCTION) {    struct reference *r = NULL;    for (j = 0; j < p->num_identifier_references; j++) {    r = p->identifier_references + j;    if (!r->inherit_offset && (r->identifier_offset == k)) {    /* Found the override. */    break;    }
pike.git/src/encode.c:1463:    if ((j != p->num_identifier_references) && (j > d)) {    /* We have a termination function at identifier k,    * that was overridden by the variant dispatcher.    *    * We need to encode it here at its original place.    */    id_dumped[k] = 1;    gs_flags = r->id_flags & ref->id_flags;    id = other;    ref = r; +  EDB(3, fprintf(stderr, "%*sEncoding termination function.\n", +  data->depth, ""));    goto encode_pike_function;    }    }    }    /* Not supported. */    Pike_error("Cannot encode functions implemented in C "    "(identifier=\"%S\").\n",    id->name);    break;