#2006 crash in Tcl_DeleteHashEntry( 0 )

obsolete: 8.4b1
closed-invalid
5
2002-08-05
2002-08-05
Anonymous
No

I'm running 8.4b1 on PC win-32, using C interface.

As result of some tcl stuff, it gets into
Tcl_DeleteHashEntry(), with 0 as the arg, and crashes.

In my opinion the function should check the pointer and
return if zero, because it's very easy to do and the
function is a void anyway, so the caller isn't depending
on a nice return.

Anyway, I inserted these lines:
void
Tcl_DeleteHashEntry(entryPtr)
Tcl_HashEntry *entryPtr;
{
// jesse
if( !entryPtr )
return;

On exit from my app, I call Tcl_Finalize(). This is the
callstack:
Tcl_DeleteHashEntry(Tcl_HashEntry * 0x00000000)
Tk_DestroyWindow(Tk_Window_ * 0x011a8720)
Tk_DestroyWindow(Tk_Window_ * 0x0116d8f0)
Tk_DestroyWindow(Tk_Window_ * 0x003c4508)
Tk_DestroyWindow(Tk_Window_ * 0x0106b270)
DeleteWindowsExitProc(void * 0x00000000)
Tcl_Finalize() line 790 + 12 bytes

thanks -
jesse

Discussion

  • Nobody/Anonymous

    Logged In: NO

    posted by jesse@cohesionsystems.com

     
  • Donal K. Fellows

    • assigned_to: hobbs --> dkf
    • status: open --> closed-invalid
     
  • Donal K. Fellows

    Logged In: YES
    user_id=79902

    This is a Tk bug (NULL shouldn't ever be passed to
    Tcl_DeleteHashEntry(), because it should never be returned
    by Tcl_CreateHashEntry(), and only ever returned by
    Tcl_FindHashEntry() to indicate that no entry was found.)
    Please refile there, preferably with some code to let us
    reproduce the bug in a standard (or minimally-modified)
    Tcl/Tk shell.