> I just installed heditv2 and ran into a small bug. Whenever I try to save > internally it calls an assert failure in DBGHEAP.C. I traced the bug to > the first free_help call in hedit_save_internally. I then traced through > free_help and heres what I found. congrats..this is the first bug report i've had for hedit v2 (in fact, you're the only person that i know of that is using it besides me).. > void free_help(struct help_index_element *help) > { > > if (help->keywords) > free(help->keywords); <--- this free works fine > if (help->entry) > free(help->entry); <--- and so does this one > free(help); <--- it asserts on this one > } ok..i think that the problem is that we are trying to free an element of the help_table..change the 'free(help)' to: memset(mess, 0, sizeof(struct help_index_element)); but this brings up another issue (i think)..here is my an excerpt of my cleanup_olc: void cleanup_olc(struct descriptor_data *d, byte cleanup_type) { . . /*. Check for room . */ if (OLC_ROOM(d)) { switch (cleanup_type) { case CLEANUP_ALL: free_room(OLC_ROOM(d)); break; <- get rid of this line case CLEANUP_STRUCTS: FREE(OLC_ROOM(d)); break; default: /*. Caller has screwed up . */ break; } } ok..free_room frees all of the parts of the room, but not the actual room pointer itself..so i don't think that the first break should be there..that way when we abort editing a room, it'll free the OLC_ROOM as well..i believe oasis v1.6b is like this..the same should be done for hedit, qedit, and anything else that differentiates between a CLEANUP_ALL and a CLEANUP_STRUCTS.. i'm going to wait for confirmation (from george in particular since he is probably most familiar with oasis), then i'll fix the patch, and upload the new one.. siv +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST