diff --git a/src/program.c b/src/program.c index 0a3968fb2d45f8d5a29893e9c74c76c84a9e20a3..ef00604d7b659eb7c4be72063767bc06b99a8735 100644 --- a/src/program.c +++ b/src/program.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: program.c,v 1.120 1999/04/07 23:10:10 hubbe Exp $"); +RCSID("$Id: program.c,v 1.121 1999/04/09 04:14:25 hubbe Exp $"); #include "program.h" #include "object.h" #include "dynamic_buffer.h" @@ -1849,6 +1849,7 @@ INT32 define_function(struct pike_string *name, } /* We modify the old definition if it is in this program */ + if(ref.inherit_offset==0) { if(func) @@ -1858,8 +1859,10 @@ INT32 define_function(struct pike_string *name, funp->identifier_flags=function_flags; }else{ - if(compiler_pass==1 || (ref.id_flags & ID_INLINE)) + if(ref.id_flags & ID_INLINE) + { goto make_a_new_def; + } /* Otherwise we make a new definition */ copy_shared_string(fun.name, name); @@ -1887,6 +1890,7 @@ INT32 define_function(struct pike_string *name, } make_a_new_def: + #ifdef PIKE_DEBUG if(compiler_pass==2) fatal("Internal error: Not allowed to add more identifiers during second compiler pass.\n");