diff options
author | fvogel <fvogelnew1@free.fr> | 2018-01-28 19:49:55 (GMT) |
---|---|---|
committer | fvogel <fvogelnew1@free.fr> | 2018-01-28 19:49:55 (GMT) |
commit | 4b52abe83965203f90bb431ba8dc9039165f2646 (patch) | |
tree | ce722f684017d75bc3ecd694eecfdd54d3d52dbb /generic/tkEntry.c | |
parent | 45ee94dff4405aa24cdccccbe00b5bab3d549c43 (diff) | |
download | tk-4b52abe83965203f90bb431ba8dc9039165f2646.zip tk-4b52abe83965203f90bb431ba8dc9039165f2646.tar.gz tk-4b52abe83965203f90bb431ba8dc9039165f2646.tar.bz2 |
Fix [5d991b822e]: segmentation violation in TclObjLookupVarEx. Patch from Christian Werner.
Diffstat (limited to 'generic/tkEntry.c')
-rw-r--r-- | generic/tkEntry.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/generic/tkEntry.c b/generic/tkEntry.c index 25774cc..678691f 100644 --- a/generic/tkEntry.c +++ b/generic/tkEntry.c @@ -3135,8 +3135,8 @@ static char * EntryTextVarProc( ClientData clientData, /* Information about button. */ Tcl_Interp *interp, /* Interpreter containing variable. */ - const char *name1, /* Not used. */ - const char *name2, /* Not used. */ + const char *name1, /* Name of variable. */ + const char *name2, /* Second part of variable name. */ int flags) /* Information about what happened. */ { Entry *entryPtr = clientData; @@ -3150,6 +3150,19 @@ EntryTextVarProc( } /* + * See ticket [5d991b82]. + */ + + if (entryPtr->textVarName == NULL) { + if (!(flags & TCL_INTERP_DESTROYED)) { + Tcl_UntraceVar2(interp, name1, name2, + TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, + EntryTextVarProc, clientData); + } + return NULL; + } + + /* * If the variable is unset, then immediately recreate it unless the whole * interpreter is going away. */ |