diff --git a/lib/modules/Tools.pmod/Standalone.pmod/precompile.pike b/lib/modules/Tools.pmod/Standalone.pmod/precompile.pike index 8040856feef048d4721346a2fa5e99750fe0e276..aad9706d0f7f74274278c759be33cecc05f42ae7 100644 --- a/lib/modules/Tools.pmod/Standalone.pmod/precompile.pike +++ b/lib/modules/Tools.pmod/Standalone.pmod/precompile.pike @@ -1885,15 +1885,17 @@ sprintf(" } else {\n" string define = make_unique_name("class", base, name, "defined"); ret+=DEFINE(define); - ret+=({sprintf("DEFAULT_CMOD_STORAGE struct program *%s=NULL;\n" - "static int %s_fun_num=-1;\n", - program_var, program_var)}); + ret+=({sprintf("DEFAULT_CMOD_STORAGE struct program *%s=NULL;\n", + program_var)}); + ret+=IFDEF(program_var+"_fun_num_used", + ({sprintf("static int %s_fun_num=-1;", program_var)})); ret+=subclass->declarations; ret+=subclass->code; need_obj_defines["tObjImpl_"+upper_case(lname)] = 1; map_types[subclass->local_id] = ({ define, "return "+program_var+"->id;" }); + check_used[program_var+"_fun_num"]=1; addfuncs+= IFDEF(define, ({ @@ -2729,6 +2731,7 @@ static struct %s *%s_gdb_dummy_ptr; ), proto[0]->line), })); } else { + check_used[func_num] = 1; addfuncs+=IFDEF(define, ({ IFDEF(func_num+"_used", ({PC.Token(sprintf(" %s =", func_num))})), @@ -3068,8 +3071,8 @@ int main(int argc, array(string) argv) tmp->addfuncs = IFDEF("CMOD_MAP_PROGRAM_IDS_DEFINED", - ({ "set_program_id_to_id( ___cmod_map_program_ids );\n" }) - + resolve_obj_defines()) + resolve_obj_defines() + + ({ "set_program_id_to_id( ___cmod_map_program_ids );\n" })) + tmp->addfuncs + IFDEF("CMOD_MAP_PROGRAM_IDS_DEFINED", ({ "set_program_id_to_id( 0 );" }));