diff --git a/src/docode.c b/src/docode.c index 133a5fc419b689f334378ad720f4167a4ff016f8..2ac098cb8ba8e05902a56f1e7dcdb86da38116b9 100644 --- a/src/docode.c +++ b/src/docode.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: docode.c,v 1.121 2001/06/23 10:33:11 hubbe Exp $"); +RCSID("$Id: docode.c,v 1.122 2001/06/23 21:52:09 hubbe Exp $"); #include "las.h" #include "program.h" #include "pike_types.h" @@ -1754,7 +1754,8 @@ static int do_docode2(node *n, INT16 flags) x++; #endif emit2(F_EXTERNAL, n->u.sval.subtype, x); - Pike_compiler->new_program->flags |= PROGRAM_USES_PARENT; + Pike_compiler->new_program->flags |= + PROGRAM_USES_PARENT | PROGRAM_NEEDS_PARENT; return 1; } } diff --git a/src/las.c b/src/las.c index 5283060d4c2d747f4e67edcd2621a2e2eeeada9a..a840f0c022692d55efdb571ad98ded697ef8d322 100644 --- a/src/las.c +++ b/src/las.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: las.c,v 1.253 2001/06/07 21:47:11 hubbe Exp $"); +RCSID("$Id: las.c,v 1.254 2001/06/23 21:52:09 hubbe Exp $"); #include "language.h" #include "interpret.h" @@ -953,7 +953,7 @@ node *debug_mknode(short token, node *a, node *b) res->node_info |= OPT_EXTERNAL_DEPEND; for(e=0;e<b->u.sval.u.integer;e++) { - state->new_program->flags |= PROGRAM_USES_PARENT; + state->new_program->flags |= PROGRAM_USES_PARENT | PROGRAM_NEEDS_PARENT; state=state->previous; } @@ -1310,7 +1310,7 @@ node *debug_mkexternalnode(struct program *parent_prog, int i) state = Pike_compiler; while(parent_prog != state->new_program) { - state->new_program->flags |= PROGRAM_USES_PARENT; + state->new_program->flags |= PROGRAM_USES_PARENT | PROGRAM_NEEDS_PARENT; state=state->previous; } @@ -1900,7 +1900,7 @@ node *debug_mksvaluenode(struct svalue *s) struct program_state *state=Pike_compiler;; for(;state->fake_object!=s->u.object;state=state->previous) { - state->new_program->flags |= PROGRAM_USES_PARENT; + state->new_program->flags |= PROGRAM_USES_PARENT | PROGRAM_NEEDS_PARENT; n=mkefuncallnode("function_object", mkefuncallnode("object_program",n)); } diff --git a/src/object.c b/src/object.c index 78e8a878ed600c50f34ee5ab7e56b2cb6cf4cc8f..68db4d7c5991fdc132cca4d2ad1f05ca91712b1f 100644 --- a/src/object.c +++ b/src/object.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: object.c,v 1.170 2001/06/11 19:58:29 mast Exp $"); +RCSID("$Id: object.c,v 1.171 2001/06/23 21:52:10 hubbe Exp $"); #include "object.h" #include "dynamic_buffer.h" #include "interpret.h" @@ -268,7 +268,7 @@ PMOD_EXPORT struct object *debug_clone_object(struct program *p, int args) { ONERROR tmp; struct object *o; - if(p->flags & PROGRAM_USES_PARENT) + if(p->flags & PROGRAM_NEEDS_PARENT) Pike_error("Parent lost, cannot clone program.\n"); o=low_clone(p); diff --git a/src/program.c b/src/program.c index 6768d0bfb5773523d7b183c07b2aa5b172252a36..c0a908d68194b9c154b2797fe26c01bd2dbf4adf 100644 --- a/src/program.c +++ b/src/program.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: program.c,v 1.332 2001/06/14 16:12:13 grubba Exp $"); +RCSID("$Id: program.c,v 1.333 2001/06/23 21:52:10 hubbe Exp $"); #include "program.h" #include "object.h" #include "dynamic_buffer.h" @@ -2358,7 +2358,7 @@ void low_inherit(struct program *p, return; } - if(p->flags & PROGRAM_USES_PARENT) + if(p->flags & PROGRAM_NEEDS_PARENT) { struct program_state *state=Pike_compiler; diff --git a/src/program.h b/src/program.h index da6a6ca8e21f00da42821a83c1269ede258f70d7..2f32dc736008bedaf987f279846e60fef199a3d5 100644 --- a/src/program.h +++ b/src/program.h @@ -5,7 +5,7 @@ \*/ /* - * $Id: program.h,v 1.129 2001/06/08 19:32:46 grubba Exp $ + * $Id: program.h,v 1.130 2001/06/23 21:52:10 hubbe Exp $ */ #ifndef PROGRAM_H #define PROGRAM_H @@ -259,6 +259,9 @@ struct pike_trampoline /* Program has not yet been used for compilation */ #define PROGRAM_VIRGIN 0x800 +/* */ +#define PROGRAM_NEEDS_PARENT 0x1000 + enum pike_program_event { PROG_EVENT_INIT =0,