Index: generic/xotcl.c =================================================================== diff -u -r63626dfe7b97728f4103a7873214038e7b15d74e -r766e368d1d5cbde753d050d9556f188c8ea1143f --- generic/xotcl.c (.../xotcl.c) (revision 63626dfe7b97728f4103a7873214038e7b15d74e) +++ generic/xotcl.c (.../xotcl.c) (revision 766e368d1d5cbde753d050d9556f188c8ea1143f) @@ -1567,10 +1567,10 @@ */ newVar = VarHashCreateVar(varTablePtr, key, &new); - - DECR_REF_COUNT(key); *varPtr = (Tcl_Var)newVar; } + DECR_REF_COUNT(key); + return *varPtr ? TCL_OK : TCL_ERROR; } @@ -10966,9 +10966,11 @@ #ifdef DO_CLEANUP /*fprintf(stderr, "CLEANUP TOP NS\n");*/ - XOTcl_DeleteNamespace(interp, RUNTIME_STATE(interp)->XOTclClassesNS); - XOTcl_DeleteNamespace(interp, RUNTIME_STATE(interp)->XOTclNS); + Tcl_Export(interp, RUNTIME_STATE(interp)->XOTclNS, "", 1); + Tcl_DeleteNamespace(RUNTIME_STATE(interp)->XOTclClassesNS); + Tcl_DeleteNamespace(RUNTIME_STATE(interp)->XOTclNS); #endif + /*xxxx*/ return TCL_OK; }