Index: generic/nsf.c =================================================================== diff -u -rf32527e58ada02a9089fa17e2d1a99bac89f9be9 -rd31c271afb2488abafa0642b07538a3e62106130 --- generic/nsf.c (.../nsf.c) (revision f32527e58ada02a9089fa17e2d1a99bac89f9be9) +++ generic/nsf.c (.../nsf.c) (revision d31c271afb2488abafa0642b07538a3e62106130) @@ -17860,17 +17860,23 @@ ObjectSystemsCleanup(interp, withKeepvars); #ifdef DO_CLEANUP + { + NsfRuntimeState *rst = RUNTIME_STATE(interp); # if defined(CHECK_ACTIVATION_COUNTS) - assert(RUNTIME_STATE(interp)->cscList == NULL); + assert(rst->cscList == NULL); # endif - /*fprintf(stderr, "CLEANUP TOP NS\n");*/ - Tcl_Export(interp, RUNTIME_STATE(interp)->NsfNS, "", 1); - MEM_COUNT_FREE("TclNamespace",RUNTIME_STATE(interp)->NsfClassesNS); - MEM_COUNT_FREE("TclNamespace",RUNTIME_STATE(interp)->NsfNS); - Tcl_DeleteNamespace(RUNTIME_STATE(interp)->NsfClassesNS); - Tcl_DeleteNamespace(RUNTIME_STATE(interp)->NsfNS); + /*fprintf(stderr, "CLEANUP TOP NS\n");*/ + Tcl_Export(interp, rst->NsfNS, "", 1); + if (rst->NsfClassesNS) { + MEM_COUNT_FREE("TclNamespace",rst->NsfClassesNS); + Tcl_DeleteNamespace(rst->NsfClassesNS); + } + if (rst->NsfNS) { + MEM_COUNT_FREE("TclNamespace",rst->NsfNS); + Tcl_DeleteNamespace(rst->NsfNS); + } + } #endif - return TCL_OK; }