[msvc][heditv2] free_help bug

From: Jon Barrett (mixtli@SINFO.NET)
Date: 05/24/98


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.

struct help_index_element {
   char *keywords;
   char *entry;
   int min_level;
};

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
}

I tried putting if(help) free(help); but this did not work because if the
function is called, the help pointer is never null.
Here're the questions: Has anyone ever had this bug, if so how did you fix
it?  If not, does anyone have and ideas on fixing it?

If your going to say RTFC(dak :), don't bother, for I am actively
RTFC'ing.  I have followed the code al the way to the assert line in
dbgheap.c and it reads: _ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));.
I have no idea what block type is so bear with me.

Thanks in advance.

*>Jon<*


     +------------------------------------------------------------+
     | 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