Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
- Use ckalloc(), ckfree() everywhere.
- Default FREECAST to (char *).
- Added comment with Tcl/Tk version info.
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 1be788b..f198e75 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -25,6 +25,18 @@
 
 /* _tkinter.c -- Interface to libtk.a and libtcl.a. */
 
+/* TCL/TK VERSION INFO:
+
+   Unix:
+	This should work with any version from Tcl 4.0 / Tck 7.4.
+	Do not use older versions.
+
+   Mac and Windows:
+	Use Tcl 4.1p1 / Tk 7.5p1 or possibly newer.
+	It does not seem to work reliably with the original 4.1/7.5
+	release.  (4.0/7.4 were never released for these platforms.)
+*/
+
 #include "Python.h"
 #include <ctype.h>
 
@@ -53,7 +65,7 @@
 ** This is for Tcl 7.5 and Tk 4.1 (patch release 1).
 */
 
-/* free() expects a char* */
+/* ckfree() expects a char* */
 #define FREECAST (char *)
 
 #include <Events.h> /* For EventRecord */
@@ -67,7 +79,7 @@
 #endif /* macintosh */
 
 #ifndef FREECAST
-#define FREECAST
+#define FREECAST (char *)
 #endif
 
 /**** Tkapp Object Declaration ****/
@@ -175,8 +187,8 @@
 
       if (PyTuple_Size (args) > ARGSZ)
 	{
-	  argv = (char **) malloc (PyTuple_Size (args) * sizeof (char *));
-	  fv = (int *) malloc (PyTuple_Size (args) * sizeof (int));
+	  argv = (char **) ckalloc (PyTuple_Size (args) * sizeof (char *));
+	  fv = (int *) ckalloc (PyTuple_Size (args) * sizeof (int));
 	  if (argv == NULL || fv == NULL)
 	    PyErr_NoMemory ();
 	}
@@ -207,11 +219,11 @@
 
   Py_DECREF (tmp);
   for (i = 0; i < argc; i++)
-    if (fv[i]) free (argv[i]);
+    if (fv[i]) ckfree (argv[i]);
   if (argv != argvStore)
-    free (FREECAST argv);
+    ckfree (FREECAST argv);
   if (fv != fvStore)
-    free (FREECAST fv);
+    ckfree (FREECAST fv);
 
   return res;
 }
@@ -247,7 +259,7 @@
 	PyTuple_SetItem (v, i, Split (self, argv[i]));
     }
 
-  free (FREECAST argv);
+  ckfree (FREECAST argv);
   return v;
 }
 
@@ -310,13 +322,13 @@
     Tcl_SetVar (v->interp, "tcl_interactive", "0", TCL_GLOBAL_ONLY);
 
   /* This is used to get the application class for Tk 4.1 and up */
-  argv0 = (char*) malloc (strlen (className) + 1);
+  argv0 = (char*) ckalloc (strlen (className) + 1);
   if (argv0 != NULL) {
     strcpy (argv0, className);
     if (isupper (argv0[0]))
       argv0[0] = tolower (argv0[0]);
     Tcl_SetVar (v->interp, "argv0", argv0, TCL_GLOBAL_ONLY);
-    free (argv0);
+    ckfree (argv0);
   }
 
   if (Tcl_AppInit (v->interp) != TCL_OK)
@@ -337,11 +349,11 @@
   cmd = Merge (args);
   if (Tcl_Eval (Tkapp_Interp (self), cmd) == TCL_ERROR)
     {
-      free (cmd);
+      ckfree (cmd);
       return Tkinter_Error (self);
     }
 
-  free (cmd);
+  ckfree (cmd);
   return PyString_FromString (Tkapp_Result (self));
 }
 
@@ -355,11 +367,11 @@
   cmd = Merge (args);
   if (Tcl_GlobalEval (Tkapp_Interp (self), cmd) == TCL_ERROR)
     {
-      free (cmd);
+      ckfree (cmd);
       return Tkinter_Error (self);
     }
   
-  free (cmd);
+  ckfree (cmd);
   return PyString_FromString (Tkapp_Result (self));
 }
 
@@ -696,7 +708,7 @@
   for (i = 0; i < argc; i++)
     PyTuple_SetItem (v, i, PyString_FromString (argv[i]));
 
-  free (FREECAST argv);
+  ckfree (FREECAST argv);
   return v;
 }
 
@@ -722,7 +734,7 @@
 
   s = Merge (args);
   v = PyString_FromString (s);
-  free (s);
+  ckfree (s);
   return v;
 }