summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2015-07-07 15:20:34 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2015-07-07 15:20:34 (GMT)
commit3cbff9f968ec8d9d215341a263bd40903b8a782e (patch)
tree31a3c3ed7df6d40f8f9ed76b8482225e1fa5839d
parent23378d66e9d5598a406f1d396412a33b6e00feac (diff)
downloadtk-3cbff9f968ec8d9d215341a263bd40903b8a782e.zip
tk-3cbff9f968ec8d9d215341a263bd40903b8a782e.tar.gz
tk-3cbff9f968ec8d9d215341a263bd40903b8a782e.tar.bz2
Fix for [805cffb017fde5ba]: segfault via Tk_ConfigureWidget
-rw-r--r--generic/tkOldConfig.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/generic/tkOldConfig.c b/generic/tkOldConfig.c
index 97ad5cb..d7a33f7 100644
--- a/generic/tkOldConfig.c
+++ b/generic/tkOldConfig.c
@@ -112,6 +112,10 @@ Tk_ConfigureWidget(
specs = GetCachedSpecs(interp, specs);
+ for (specPtr = specs; specPtr->type != TK_CONFIG_END; specPtr++) {
+ specPtr->specFlags &= ~TK_CONFIG_OPTION_SPECIFIED;
+ }
+
/*
* Pass one: scan through all of the arguments, processing those that
* match entries in the specs.
@@ -167,7 +171,6 @@ Tk_ConfigureWidget(
if ((specPtr->specFlags & TK_CONFIG_OPTION_SPECIFIED)
|| (specPtr->argvName == NULL)
|| (specPtr->type == TK_CONFIG_SYNONYM)) {
- specPtr->specFlags &= ~TK_CONFIG_OPTION_SPECIFIED;
continue;
}
if (((specPtr->specFlags & needFlags) != needFlags)
@@ -1128,7 +1131,6 @@ GetCachedSpecs(
specPtr->defValue = Tk_GetUid(specPtr->defValue);
}
}
- specPtr->specFlags &= ~TK_CONFIG_OPTION_SPECIFIED;
}
} else {
cachedSpecs = (Tk_ConfigSpec *) Tcl_GetHashValue(entryPtr);