summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
Diffstat (limited to 'generic')
-rw-r--r--generic/tkConfig.c11
-rw-r--r--generic/tkTest.c9
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;