>Damian wrote: >> I tried out the oasis and circle bpl 17 package recommended, but it still >didnt >> work. exactly the same error as in all the other attempts made. backtrace >> tracks it down to copy_object(). and no, I am still not using windows. (Josh replied) >I have this same crash bug myself. Yes, the crash goes through >copy_object() but more specifically free_object_strings() at which it >crashes the first time it tries to free something: > >void free_object_strings(struct obj_data *obj) >{ ><snip, debugging code> > > if (obj->name) > free(obj->name); <--*crash, line 385* > if (obj->description) > free(obj->description); > if (obj->short_description) I actually have something that is quite different from this. There was a conflict with copy_object already being used, so I kept the old one and added the new one that came with the iedit patch, but made it copy_iobject instead. (The function is shown here exactly as it is in the patch, the only thing I changed was the name.) In this function, the strings are taken care of like this: /* make a complete copy of an object */ struct obj_data *copy_iobject(struct obj_data *obj) { struct extra_descr_data *this, *temp, *temp2; struct obj_affected_type *affs; struct obj_data *returno; int i; /* allocate object */ CREATE(returno, struct obj_data, 1); clear_object(returno); /* create the interal seperate structs */ /* copy all strings over */ if (obj->name) returno->name = str_dup(obj->name); if (obj->short_description) returno->short_description = str_dup(obj->short_description); if (obj->description) returno->description = str_dup(obj->description); etc. This seems to work well as I've not had it do any weird things on me. *knock on wood*, and the copy_iobject function never calls the free_object_strings function. +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 04/10/01 PDT