Oops. Added Changelog headings.
[pspp] / src / expressions / evaluate.c
index c2868429b246b6f9dc06d5d739b0629ce80c01e3..07e4d8aef7a5202523caa44160e2426f54fa4f31 100644 (file)
@@ -127,7 +127,7 @@ cmd_debug_evaluate (void)
         dump_postfix = 1;
       else if (lex_match ('('))
         {
-          char name[MAX_VAR_NAME_LEN + 1];
+          char name[LONG_NAME_LEN + 1];
           struct variable *v;
           size_t old_value_cnt;
           int width;
@@ -140,7 +140,7 @@ cmd_debug_evaluate (void)
           if (!lex_force_match ('='))
             goto done;
 
-          if (token == T_NUM) 
+          if (lex_is_number ())
             {
               width = 0;
               fprintf (stderr, "(%s = %.2f)", name, tokval); 
@@ -174,7 +174,7 @@ cmd_debug_evaluate (void)
             }
           case_resize (c, old_value_cnt, dict_get_next_value_idx (d));
 
-          if (token == T_NUM)
+          if (lex_is_number ())
             case_data_rw (c, v->fv)->f = tokval;
           else
             memcpy (case_data_rw (c, v->fv)->s, ds_data (&tokstr),
@@ -198,7 +198,7 @@ cmd_debug_evaluate (void)
   lex_get ();
 
   expr = expr_parse_any (d, optimize);
-  if (!expr || token != '.') 
+  if (!expr || lex_end_of_command () != CMD_SUCCESS)
     {
       if (expr != NULL)
         expr_free (expr);
@@ -248,8 +248,12 @@ cmd_debug_evaluate (void)
   retval = CMD_SUCCESS;
 
  done:
-  if (c != NULL)
-    case_destroy (c);
+  if (c != NULL) 
+    {
+      case_destroy (c);
+      free (c); 
+    }
+  dict_destroy (d);
   return retval;
 }