pike.git / src / program.c

version» Context lines:

pike.git/src/program.c:1:   /*   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: program.c,v 1.650 2008/02/12 18:51:08 grubba Exp $ + || $Id: program.c,v 1.651 2008/02/14 18:23:11 grubba Exp $   */      #include "global.h"   #include "program.h"   #include "object.h"   #include "dynamic_buffer.h"   #include "pike_types.h"   #include "stralloc.h"   #include "las.h"   #include "lex.h"
pike.git/src/program.c:3239:       if(p->identifier_references[e].identifier_offset >    p->inherits[p->identifier_references[e].inherit_offset].prog->num_identifiers)    Pike_fatal("Identifier offset %d is wrong! %d > %d\n",    e,    p->identifier_references[e].identifier_offset,    p->inherits[p->identifier_references[e].inherit_offset].prog->num_identifiers);       i=ID_FROM_INT(p, e);    -  if(IDENTIFIER_IS_VARIABLE(i->identifier_flags) && -  !IDENTIFIER_IS_ALIAS(i->identifier_flags)) -  { +  if (IDENTIFIER_IS_ALIAS(i->identifier_flags)) { +  if ((!i->func.ext_ref.depth) && (i->func.ext_ref.id == e)) { +  dump_program_tables(p, 0); +  Pike_fatal("Circular alias for reference %d!\n", e); +  } +  } else if (IDENTIFIER_IS_VARIABLE(i->identifier_flags)) {    size_t q, size;    /* Variable */    ptrdiff_t offset = INHERIT_FROM_INT(p, e)->storage_offset+i->func.offset;    if (i->run_time_type == PIKE_T_GET_SET) {    struct reference *ref = PTR_FROM_INT(p, e);    if (!ref->inherit_offset) {    INT32 *gs_info = (INT32 *)(p->program + i->func.offset);    if ((gs_info + 2) > (INT32 *)(p->program + p->num_program)) {    dump_program_tables(p, 0);    Pike_fatal("Getter/setter variable outside program!\n");