Index: generic/gentclAPI.tcl
===================================================================
diff -u -r44ab715c53a4151f2bcd844fd6f3a1eb2fc0bbe6 -r878a74b68b15d4ee5c33d345e670f50ce7473ebc
--- generic/gentclAPI.tcl	(.../gentclAPI.tcl)	(revision 44ab715c53a4151f2bcd844fd6f3a1eb2fc0bbe6)
+++ generic/gentclAPI.tcl	(.../gentclAPI.tcl)	(revision 878a74b68b15d4ee5c33d345e670f50ce7473ebc)
@@ -486,7 +486,8 @@
   puts "enum {\n $enumString\n} NsfMethods;\n"
   puts $fns
   set definitionString [join $ifds ",\n"]
-  puts "static Nsf_methodDefinition method_definitions\[$nrIfds\] = \{\n$definitionString,\{NULL\}\n\};\n"
+  set terminator {NULL, NULL, 0, {{NULL, 0, 0, ConvertToNothing, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}}
+  puts "static Nsf_methodDefinition method_definitions\[$nrIfds\] = \{\n$definitionString,\n{$terminator}\n\};\n"
 }
 
 proc methodDefinition {methodName methodType implementation parameterDefinitions options} {
Index: generic/nsf.h
===================================================================
diff -u -rfccf09e0f22cd91e00f937625d6510dcf35dbcd4 -r878a74b68b15d4ee5c33d345e670f50ce7473ebc
--- generic/nsf.h	(.../nsf.h)	(revision fccf09e0f22cd91e00f937625d6510dcf35dbcd4)
+++ generic/nsf.h	(.../nsf.h)	(revision 878a74b68b15d4ee5c33d345e670f50ce7473ebc)
@@ -307,7 +307,7 @@
   Nsf_ConvertToTclobj, Nsf_ConvertToPointer;
 
 typedef struct Nsf_Param {
-  char *name;
+  const char *name;
   unsigned int flags;
   int nrArgs;
   Nsf_TypeConverter *converter;
@@ -462,7 +462,7 @@
  */
 
 typedef struct Nsf_methodDefinition {
-  CONST char *methodName;
+  const char *methodName;
   Tcl_ObjCmdProc *proc;
   int nrParameters;
   Nsf_Param paramDefs[12];
Index: generic/nsfAPI.h
===================================================================
diff -u -r4b207001b05300e9c4bbe28da106abadfb7ca1fc -r878a74b68b15d4ee5c33d345e670f50ce7473ebc
--- generic/nsfAPI.h	(.../nsfAPI.h)	(revision 4b207001b05300e9c4bbe28da106abadfb7ca1fc)
+++ generic/nsfAPI.h	(.../nsfAPI.h)	(revision 878a74b68b15d4ee5c33d345e670f50ce7473ebc)
@@ -3972,6 +3972,7 @@
 },
 {"::nsf::methods::object::info::vars", NsfObjInfoVarsMethodStub, 1, {
   {"pattern", 0, 1, Nsf_ConvertTo_String, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}
-},{NULL}
+},
+{NULL, NULL, 0, {{NULL, 0, 0, ConvertToNothing, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}}}
 };
 
Index: generic/nsfError.c
===================================================================
diff -u -re0da9e0032a357fe5c6bfdd37a2d234e00780460 -r878a74b68b15d4ee5c33d345e670f50ce7473ebc
--- generic/nsfError.c	(.../nsfError.c)	(revision e0da9e0032a357fe5c6bfdd37a2d234e00780460)
+++ generic/nsfError.c	(.../nsfError.c)	(revision 878a74b68b15d4ee5c33d345e670f50ce7473ebc)
@@ -331,7 +331,7 @@
  */
 int
 NsfObjWrongArgs(Tcl_Interp *interp, const char *msg, Tcl_Obj *cmdNameObj,
-		Tcl_Obj *methodPathObj, char *arglist) {
+		Tcl_Obj *methodPathObj, const char *arglist) {
   int need_space = 0;
   Tcl_DString ds;
 
Index: generic/nsfInt.h
===================================================================
diff -u -rb089be700bb58579a48e77619512a47eb3c5562d -r878a74b68b15d4ee5c33d345e670f50ce7473ebc
--- generic/nsfInt.h	(.../nsfInt.h)	(revision b089be700bb58579a48e77619512a47eb3c5562d)
+++ generic/nsfInt.h	(.../nsfInt.h)	(revision 878a74b68b15d4ee5c33d345e670f50ce7473ebc)
@@ -179,8 +179,7 @@
 #  define MEM_COUNT_RELEASE()
 #endif
 
-# define STRING_NEW(target, p, l)  (target) = ckalloc((unsigned)(l)+1u); strncpy((target), (p), (l)); *((target)+(l)) = '\0'; \
-  MEM_COUNT_ALLOC(#target, (target))
+# define STRING_NEW(target, p, l)  (target) = strndup(p,l); MEM_COUNT_ALLOC(#target, (target))
 # define STRING_FREE(key, p)  MEM_COUNT_FREE((key), (p)); ckfree((p))
 
 #define DSTRING_INIT(dsPtr) Tcl_DStringInit(dsPtr); MEM_COUNT_ALLOC("DString",(dsPtr))
@@ -714,9 +713,9 @@
   NSF_RENAME
 } NsfGlobalNames;
 #if !defined(NSF_C)
-EXTERN char *NsfGlobalStrings[];
+EXTERN const char *NsfGlobalStrings[];
 #else
-char *NsfGlobalStrings[] = {
+const char *NsfGlobalStrings[] = {
   "", "0", "1",
   /* methods called internally */
   "configure", "initialize", "getParameterSpec",
@@ -1125,7 +1124,7 @@
 
 EXTERN int NsfObjWrongArgs(Tcl_Interp *interp, CONST char *msg,
 			   Tcl_Obj *cmdName, Tcl_Obj *methodName,
-			   char *arglist)
+			   const char *arglist)
   nonnull(1) nonnull(2);
 
 EXTERN CONST char *NsfMethodName(Tcl_Obj *methodObj)
Index: generic/nsfStubLib.c
===================================================================
diff -u -r8e079b542dd68c7975117266efba2b4701909ce9 -r878a74b68b15d4ee5c33d345e670f50ce7473ebc
--- generic/nsfStubLib.c	(.../nsfStubLib.c)	(revision 8e079b542dd68c7975117266efba2b4701909ce9)
+++ generic/nsfStubLib.c	(.../nsfStubLib.c)	(revision 878a74b68b15d4ee5c33d345e670f50ce7473ebc)
@@ -121,7 +121,7 @@
       }
 
       if (intStubsPtr == NULL) {
-        static char *errMsg = "missing stubInt table pointer";
+        static const char *errMsg = "missing stubInt table pointer";
 
         Tcl_ResetResult(interp);
         NsfPrintError(interp, "Error loading package %s: "
Index: generic/nsfUtil.c
===================================================================
diff -u -rbdfa0fc0d417405db109b2099da713dc4a0daa6f -r878a74b68b15d4ee5c33d345e670f50ce7473ebc
--- generic/nsfUtil.c	(.../nsfUtil.c)	(revision bdfa0fc0d417405db109b2099da713dc4a0daa6f)
+++ generic/nsfUtil.c	(.../nsfUtil.c)	(revision 878a74b68b15d4ee5c33d345e670f50ce7473ebc)
@@ -148,7 +148,7 @@
  *----------------------------------------------------------------------
  */
 
-static char *alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+static const char *alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 static size_t blockIncrement = 8u;
 /*
   static char *alphabet = "ab";
@@ -222,7 +222,7 @@
 
 void
 NsfStringIncrInit(NsfStringIncrStruct *iss) {
-  char        *p;
+  const char  *p;
   int          i = 0;
   const size_t bufSize = (blockIncrement > 2) ? blockIncrement : 2;