generic/nsf.c (+2 -2)
32791 32791   /* Must be before freeing of NsfGlobalObjs */
32792 32792   NsfShadowTclCommands(interp, SHADOW_UNLOAD);
32793 32793
32794 32794   MEM_COUNT_FREE("Tcl_InitHashTable", &rst->activeFilterTablePtr);
32795 32795   Tcl_DeleteHashTable(&rst->activeFilterTablePtr);
32796 32796
32797 32797   /* free "global" (per main interp) objects */
32798 32798   {
32799 32799     int i;
32800 32800     for (i = 0; i < nr_elements(NsfGlobalStrings); i++) {
32801 32801       DECR_REF_COUNT(NsfGlobalObjs[i]);
32802 32802     }
32803 32803   }
32804 32804   NsfStringIncrFree(&rst->iss);
32805 32805
32806 32806   /*
32807 32807    * Free all data in the hash tables managing pointer converters,
32808 32808    * enumerations, and method definitions.
32809 32809    */
32810 32810   Nsf_PointerExit(interp);
32811     Nsf_EnumerationTypeRelease(interp);
  32811   Nsf_EnumerationTypeRelease();
32812 32812   Nsf_CmdDefinitionRelease();
32813 32813
32814 32814 #if defined(NSF_PROFILE)
32815 32815   NsfProfileFree(interp);
32816 32816 #endif
32817 32817
32818 32818   FREE(Tcl_Obj**, NsfGlobalObjs);
32819 32819
32820 32820 #if defined(TCL_MEM_DEBUG)
32821 32821   TclDumpMemoryInfo((ClientData) stderr, 0);
32822 32822   Tcl_DumpActiveMemory("./nsfActiveMem");
32823 32823   /* Tcl_Eval(interp, "puts {checkmem to checkmemFile};
32824 32824      checkmem checkmemFile"); */
32825 32825 #endif
32826 32826
32827 32827   /*
32828 32828    * Free runtime state.
32829 32829    */
32830 32830   /*fprintf(stderr, "+++ ExiHandler frees runtime state of interp %p\n",interp);*/
32831 32831   ckfree((char *) RUNTIME_STATE(interp));
 
33036 33036     /*
33037 33037      * When both values are the same, we are in a Tcl version before 8.7,
33038 33038      * where we have no properByteArrayTypePtr. So set it to an invalid
33039 33039      * value to avoid potential confusions. Without this stunt, we would
33040 33040      * need several ifdefs.
33041 33041      */
33042 33042     Nsf_OT_properByteArrayType = (Tcl_ObjType *)0xffffff;
33043 33043   }
33044 33044   Tcl_DecrRefCount(tmpObj);
33045 33045   assert(Nsf_OT_properByteArrayType != NULL);
33046 33046
33047 33047   NsfMutexUnlock(&initMutex);
33048 33048
33049 33049   /*
33050 33050    * Initialize the pointer converter, the enumeration types and cmd
33051 33051    * definitions tables and load it with the generated information for
33052 33052    * introspection.
33053 33053    */
33054 33054   Nsf_PointerInit(interp);
33055 33055
33056     Nsf_EnumerationTypeInit(interp);
  33056   Nsf_EnumerationTypeInit();
33057 33057   result = Nsf_EnumerationTypeRegister(interp, enumeratorConverterEntries);
33058 33058   if (unlikely(result != TCL_OK)) {
33059 33059     return result;
33060 33060   }
33061 33061
33062 33062   Nsf_CmdDefinitionInit();
33063 33063   Nsf_CmdDefinitionRegister(interp, method_definitions);
33064 33064
33065 33065   /*
33066 33066     fprintf(stderr, "SIZES: obj=%d, tcl_obj=%d, DString=%d, class=%d, namespace=%d, command=%d, HashTable=%d\n",
33067 33067     sizeof(NsfObject), sizeof(Tcl_Obj), sizeof(Tcl_DString), sizeof(NsfClass),
33068 33068     sizeof(Namespace), sizeof(Command), sizeof(Tcl_HashTable));
33069 33069   */
33070 33070
33071 33071 #if defined(NSF_PROFILE)
33072 33072   NsfProfileInit(interp);
33073 33073 #endif
33074 33074   rst = RUNTIME_STATE(interp);
33075 33075   rst->logSeverity = NSF_LOG_NOTICE;
33076 33076   rst->doFilters = 1;