Don't print a string after possibly freeing it.
authorGeorge Koehler <xkernigh@netscape.net>
Sun, 13 Nov 2016 16:55:09 +0000 (11:55 -0500)
committerGeorge Koehler <xkernigh@netscape.net>
Sun, 13 Nov 2016 17:02:35 +0000 (12:02 -0500)
new= newvar(name) takes ownership of the string and might free its
memory.  Don't print name.  Do print new->v_name.

Also #include <string.h> for strcmp().

util/ack/svars.c

index 38e8f95..e540e5d 100644 (file)
@@ -4,6 +4,7 @@
  *
  */
 
+#include <string.h>
 #include "ack.h"
 
 #ifndef NORCSID
@@ -81,7 +82,7 @@ void setsvar(char *name, char *str) {
 
        new= newvar(name);
 #ifdef DEBUG
-       if ( debug>=2 ) vprint("%s=%s\n", name, str) ;
+       if ( debug>=2 ) vprint("%s=%s\n", new->v_name, str) ;
 #endif
        new->v_type= string;
        new->v_value.v_string= str;
@@ -92,7 +93,7 @@ void setpvar(char *name, char *(*rout)(void)) {
 
        new= newvar(name);
 #ifdef DEBUG
-       if ( debug>=2 ) vprint("%s= (*%o)()\n",name,rout) ;
+       if ( debug>=2 ) vprint("%s= (*%o)()\n", new->v_name, rout) ;
 #endif
        new->v_type= routine;
        new->v_value.v_routine= rout;