Index: generic/xotcl.c =================================================================== diff -u -ra976b7c6a116f584114d2612494aaaa8e8028387 -r368556e8af08a76c1408488c1b45f19f2b5b8f82 --- generic/xotcl.c (.../xotcl.c) (revision a976b7c6a116f584114d2612494aaaa8e8028387) +++ generic/xotcl.c (.../xotcl.c) (revision 368556e8af08a76c1408488c1b45f19f2b5b8f82) @@ -3789,6 +3789,7 @@ MixinResetOrderForInstances(interp, ncl); } } + Tcl_DeleteHashTable(commandTable); MEM_COUNT_FREE("Tcl_InitHashTable", commandTable); } @@ -11079,6 +11080,7 @@ if (matchObject && rc && !withGuards) { Tcl_SetObjResult(interp, rc ? matchObject->cmdName : XOTclGlobalObjects[XOTE_EMPTY]); } + Tcl_DeleteHashTable(commandTable); MEM_COUNT_FREE("Tcl_InitHashTable", commandTable); } else { rc = opt ? MixinInfo(interp, opt->instmixins, pattern, withGuards, matchObject) : TCL_OK; @@ -11112,6 +11114,7 @@ MEM_COUNT_ALLOC("Tcl_InitHashTable", commandTable); Tcl_InitHashTable(commandTable, TCL_ONE_WORD_KEYS); rc = getAllClassMixinsOf(interp, commandTable, cl, 0, 1, pattern, matchObject); + Tcl_DeleteHashTable(commandTable); MEM_COUNT_FREE("Tcl_InitHashTable", commandTable); } else { rc = AppendMatchingElementsFromCmdList(interp, opt->isClassMixinOf, @@ -11222,6 +11225,7 @@ MEM_COUNT_ALLOC("Tcl_InitHashTable", commandTable); Tcl_InitHashTable(commandTable, TCL_ONE_WORD_KEYS); rc = getAllObjectMixinsOf(interp, commandTable, cl, 0, 1, pattern, matchObject); + Tcl_DeleteHashTable(commandTable); MEM_COUNT_FREE("Tcl_InitHashTable", commandTable); } return TCL_OK; @@ -11333,8 +11337,8 @@ cl->order = NULL; subclasses = ComputeOrder(cl, cl->order, Sub); cl->order = saved; - if (subclasses) subclasses=subclasses->next; - rc = AppendMatchingElementsFromClasses(interp, subclasses, pattern, matchObject); + rc = AppendMatchingElementsFromClasses(interp, subclasses ? subclasses->next : NULL, + pattern, matchObject); XOTclFreeClasses(subclasses); } else { rc = AppendMatchingElementsFromClasses(interp, cl->sub, pattern, matchObject); @@ -11581,6 +11585,7 @@ (ClientData)tcd, forwardCmdDeleteProc); return TCL_OK; } else { + forwardCmdDeleteProc((ClientData)tcd); forward_argc_error: return XOTclObjErrArgCnt(interp, cl->object.cmdName, "instforward method ?target? ?-default name? ?-objscope? ?-methodprefix string? ?args?"); @@ -11606,6 +11611,7 @@ (ClientData)tcd, forwardCmdDeleteProc); return TCL_OK; } else { + forwardCmdDeleteProc((ClientData)tcd); forward_argc_error: return XOTclObjErrArgCnt(interp, obj->cmdName, "forward method ?target? ?-default name? ?-objscope? ?-methodprefix string? ?args?");