--- pTk/mTk/generic/tkConfig.c.orig 2008-01-04 18:50:58.000000000 +0100 +++ pTk/mTk/generic/tkConfig.c 2008-01-05 00:15:15.000000000 +0100 @@ -1210,11 +1210,12 @@ * First, check to see if the object already has the answer cached. */ - if (objPtr->typePtr == &tkOptionObjType) { - if (objPtr->internalRep.twoPtrValue.ptr1 == (VOID *) tablePtr) { +/* if (objPtr->typePtr == &tkOptionObjType) { + if (objPtr->internalRep.twoPtrValue.ptr1 == (VOID *) tablePtr + && objPtr->internalRep.twoPtrValue.ptr2 != NULL) { return (Option *) objPtr->internalRep.twoPtrValue.ptr2; } - } + }*/ /* * The answer isn't cached. @@ -2277,9 +2278,19 @@ if (optionPtr == NULL) { return NULL; } + + if (optionPtr->specPtr == NULL) { + return NULL; + } + + if (!optionPtr->specPtr->type) { + 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) { --- pTk/mTk/generic/tkFrame.c.orig 2008-01-04 22:52:12.000000000 +0100 +++ pTk/mTk/generic/tkFrame.c 2008-01-04 23:51:20.000000000 +0100 @@ -769,6 +769,7 @@ result = TCL_ERROR; goto done; } + objPtr = Tk_GetOptionValue(interp, (char *) framePtr, framePtr->optionTable, objv[2], framePtr->tkwin); if (objPtr == NULL) {