Le Mercredi 9 Mai 2001 03:01, vous avez écrit : > > void update_priest_flag (object *god, object *exp_ob, uint32 flag) { > > > > if(QUERY_FLAG(god,flag)&&!QUERY_FLAG(exp_ob,flag)) > > SET_FLAG(exp_ob,flag); > > else if(QUERY_FLAG(exp_ob,flag)&&!QUERY_FLAG(god,flag)) > > { > > if (!(QUERY_FLAG(arch_to_object(exp_ob->arch),flag))) > > CLEAR_FLAG(exp_ob,flag); > > }; > > } > > Err, arch_to_object should not be used, as that ends up creating a nice > memory leak (one for each functiion call). > > What you really want to be doing is something like: > > if (!(QUERY_FLAG(exp_ob->arch->clone,flag))) > The correct patch is then: void update_priest_flag (object *god, object *exp_ob, uint32 flag) { if(QUERY_FLAG(god,flag)&&!QUERY_FLAG(exp_ob,flag)) SET_FLAG(exp_ob,flag); else if(QUERY_FLAG(exp_ob,flag)&&!QUERY_FLAG(god,flag)) { if (!(QUERY_FLAG(&(exp_ob->arch->clone),flag))) { CLEAR_FLAG(exp_ob,flag); }; }; } > > Theres already enough memory leaks out there - we don't want to be adding > more. True. Sorry for forgetting I was in C and not in Java. Commander Gros Ad Dwarvam Aeternam !