Updated version to 0.2.1.
[tclrobot.git] / hswitch.c
index 7c7f5c3..15ddbc6 100644 (file)
--- a/hswitch.c
+++ b/hswitch.c
@@ -1,5 +1,5 @@
 /*
- * $Id: hswitch.c,v 1.3 2000/12/07 20:16:11 adam Exp $
+ * $Id: hswitch.c,v 1.5 2001/11/08 10:23:02 adam Exp $
  */
 #include <assert.h>
 #include <string.h>
@@ -17,7 +17,7 @@
 static int skipSpace (const char *cp)
 {
     int i = 0;
-    while (strchr (SPACECHR, cp[i]))
+    while (cp[i] && strchr (SPACECHR, cp[i]))
         i++;
     return i;
 }
@@ -172,7 +172,6 @@ static int tagEnd (Tcl_Interp *interp, struct tagInfo *tag,
             memcpy (value, tag->body_start, body_end - tag->body_start);
             value[body_end - tag->body_start] = '\0';
             Tcl_SetVar (interp, "body", value, 0);
-            free (value);
             while (tp)
             {
                 char vname[TAG_MAX_LEN+30];
@@ -186,6 +185,7 @@ static int tagEnd (Tcl_Interp *interp, struct tagInfo *tag,
                 free (tp0);
             }
             tcl_err = Tcl_Eval (interp, tag->code);
+            free (value);
            if (tcl_err == TCL_ERROR)
            {
                printf ("Error: code=%d %s\n", tcl_err, interp->result);