Branch: Tag:

2000-05-07

2000-05-07 00:39:52 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

allow one cyclic recursion when resolving identifiers

Rev: lib/master.pike.in:1.117
Rev: src/builtin_functions.c:1.273
Rev: src/cyclic.c:1.4
Rev: src/las.c:1.177
Rev: src/opcodes.c:1.75
Rev: src/program.c:1.236

1:   #include "global.h"   #include "cyclic.h"    - RCSID("$Id: cyclic.c,v 1.3 1998/03/28 15:35:34 grubba Exp $"); + RCSID("$Id: cyclic.c,v 1.4 2000/05/07 00:39:17 hubbe Exp $");      #define CYCLIC_HASH_SIZE 4711   
45:    void *b)   {    unsigned int h; +  void *ret=0;    CYCLIC *p;       h=(int)id;
58:    h%=CYCLIC_HASH_SIZE;       for(p=cyclic_hash[h];p;p=p->next) +  {    if(a == p->a && b==p->b && id==p->id) -  return p->ret; +  { +  ret=p->ret; +  break; +  } +  }       c->ret=(void *)1;    c->a=a;
69:    c->next=cyclic_hash[h];    cyclic_hash[h]=c;    SET_ONERROR(c->onerr, low_unlink_cyclic, c); -  return 0; +  return ret;   }