Branch: Tag:

1999-09-11

1999-09-11 08:15:58 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

bugfix for inherit

Rev: src/las.c:1.86
Rev: src/las.h:1.20
Rev: src/program.c:1.138
Rev: src/testsuite.in:1.193

5:   \*/   /**/   #include "global.h" - RCSID("$Id: program.c,v 1.137 1999/09/10 00:10:00 hubbe Exp $"); + RCSID("$Id: program.c,v 1.138 1999/09/11 08:15:57 hubbe Exp $");   #include "program.h"   #include "object.h"   #include "dynamic_buffer.h"
1406:    INT32 flags,    struct pike_string *name)   { +  struct program *p; +  struct identifier *i; +  INT32 numid, offset; +     if(!n)    {    yyerror("Unable to inherit");
1413:    }    switch(n->token)    { +  case F_IDENTIFIER: +  p=new_program; +  offset=0; +  numid=n->u.number; +  goto continue_inherit; +     case F_EXTERNAL: -  { -  struct identifier *i; -  struct program *p=parent_compilation(n->u.integer.a); -  INT32 numid=n->u.integer.b; +  p=parent_compilation(n->u.integer.a); +  offset=n->u.integer.a; +  numid=n->u.integer.b;       if(!p)    {
1425:    return;    }    +  continue_inherit: +     i=ID_FROM_INT(p, numid);       if(IDENTIFIER_IS_CONSTANT(i->identifier_flags))
1445:    low_inherit(p,    0,    numid, -  n->u.integer.a+1, +  offset+1,    flags,    name);    break; -  } +        default: -  resolv_program(n); +  resolv_class(n);    do_inherit(sp-1, flags, name);    pop_stack();    }