diff options
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tkConfig.c | 11 | ||||
-rw-r--r-- | generic/tkTest.c | 9 |
2 files changed, 8 insertions, 12 deletions
diff --git a/generic/tkConfig.c b/generic/tkConfig.c index 1cfe1fb..113b3a1 100644 --- a/generic/tkConfig.c +++ b/generic/tkConfig.c @@ -330,16 +330,9 @@ Tk_DeleteOptionTable( OptionTable *tablePtr = (OptionTable *) optionTable; Option *optionPtr; int count; - ThreadSpecificData *tsdPtr = - Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - - if (tablePtr->refCount > 1) { - tablePtr->refCount--; - return; - } - if (!tsdPtr->initialized || !Tcl_FindHashEntry(&tsdPtr->hashTable, - tablePtr->hashEntryPtr)) { + tablePtr->refCount--; + if (tablePtr->refCount!=0) { return; } diff --git a/generic/tkTest.c b/generic/tkTest.c index a951a57..8146c69 100644 --- a/generic/tkTest.c +++ b/generic/tkTest.c @@ -497,11 +497,11 @@ TestobjconfigObjCmd( Tcl_Obj *const objv[]) /* Argument objects. */ { static const char *const options[] = { - "alltypes", "chain1", "chain2", "configerror", "delete", "info", + "alltypes", "chain1", "chain2", "chain3", "configerror", "delete", "info", "internal", "new", "notenoughparams", "twowindows", NULL }; enum { - ALL_TYPES, CHAIN1, CHAIN2, CONFIG_ERROR, + ALL_TYPES, CHAIN1, CHAIN2, CHAIN3, CONFIG_ERROR, DEL, /* Can't use DELETE: VC++ compiler barfs. */ INFO, INTERNAL, NEW, NOT_ENOUGH_PARAMS, TWO_WINDOWS }; @@ -720,7 +720,8 @@ TestobjconfigObjCmd( break; } - case CHAIN2: { + case CHAIN2: + case CHAIN3: { ExtensionWidgetRecord *recordPtr; static const Tk_OptionSpec extensionSpecs[] = { {TK_OPTION_STRING, "-three", "three", "Three", "three", @@ -803,6 +804,8 @@ TestobjconfigObjCmd( } if (tables[index] != NULL) { Tk_DeleteOptionTable(tables[index]); + /* Make sure that Tk_DeleteOptionTable() is never done + * twice for the same table. */ tables[index] = NULL; } break; |