lots of tests
[pspp] / src / language / expressions / evaluate.c
index 9c809fac4cd22bc3d5950bd990aa118371bb6921..09f237e0cd4e3664a0a57353ce2b0f0d2292becf 100644 (file)
@@ -192,13 +192,6 @@ cmd_debug_evaluate (struct lexer *lexer, struct dataset *dsother UNUSED)
           free (name);
           name = NULL;
 
-          if (c == NULL)
-            c = case_create (dict_get_proto (d));
-          else
-            c = case_unshare_and_resize (c, dict_get_proto (d));
-
-          *case_data_rw (c, v) = value;
-
           if (lex_match_id (lexer, "MISSING"))
             {
               struct missing_values mv;
@@ -208,6 +201,13 @@ cmd_debug_evaluate (struct lexer *lexer, struct dataset *dsother UNUSED)
               mv_destroy (&mv);
             }
 
+          if (c == NULL)
+            c = case_create (dict_get_proto (d));
+          else
+            c = case_unshare_and_resize (c, dict_get_proto (d));
+          value_swap (case_data_rw (c, v), &value);
+          value_destroy (&value, width);
+
           if (!lex_force_match (lexer, T_RPAREN))
             goto done;
         }
@@ -255,6 +255,7 @@ cmd_debug_evaluate (struct lexer *lexer, struct dataset *dsother UNUSED)
     switch (expr->type)
       {
       case OP_number:
+      case OP_num_vec_elem:
         {
           double d = expr_evaluate_num (expr, c, 0);
           if (d == SYSMIS)