--- /dev/null
+diff -up Tk-804.028/pTk/mTk/generic/tkConfig.c.seg Tk-804.028/pTk/mTk/generic/tkConfig.c
+--- Tk-804.028/pTk/mTk/generic/tkConfig.c.seg 2008-03-11 23:29:39.000000000 -0400
++++ Tk-804.028/pTk/mTk/generic/tkConfig.c 2008-03-11 23:28:09.000000000 -0400
+@@ -1210,11 +1210,11 @@ GetOptionFromObj(interp, objPtr, tablePt
+ * First, check to see if the object already has the answer cached.
+ */
+
+- if (objPtr->typePtr == &tkOptionObjType) {
++/* if (objPtr->typePtr == &tkOptionObjType) {
+ if (objPtr->internalRep.twoPtrValue.ptr1 == (VOID *) tablePtr) {
+ return (Option *) objPtr->internalRep.twoPtrValue.ptr2;
+ }
+- }
++ }*/
+
+ /*
+ * The answer isn't cached.
+@@ -2277,9 +2277,15 @@ Tk_GetOptionValue(interp, recordPtr, opt
+ if (optionPtr == NULL) {
+ return NULL;
+ }
++
++ if (optionPtr->specPtr == NULL) {
++ return NULL;
++ }
++
+ if (optionPtr->specPtr->type == TK_OPTION_SYNONYM) {
+ optionPtr = optionPtr->extra.synonymPtr;
+ }
++
+ if (optionPtr->specPtr->objOffset >= 0) {
+ resultPtr = *((Tcl_Obj **) (recordPtr + optionPtr->specPtr->objOffset));
+ if (resultPtr == NULL) {