> 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