Rewrite expression code.
[pspp-builds.git] / src / vfm.c
index 1d3d2a5ca627a2d98db8f65b124c46e3eeaea1af..796e3bcff07eda9daac4101bb5793d8721d2dd8f 100644 (file)
--- a/src/vfm.c
+++ b/src/vfm.c
 #include "alloc.h"
 #include "case.h"
 #include "casefile.h"
+#include "dictionary.h"
 #include "do-ifP.h"
 #include "error.h"
-#include "expr.h"
+#include "expressions/public.h"
 #include "misc.h"
-#include "random.h"
 #include "settings.h"
 #include "som.h"
 #include "str.h"
@@ -339,7 +339,7 @@ filter_case (const struct ccase *c, int case_idx)
 
   /* PROCESS IF. */
   if (process_if_expr != NULL
-      && expr_evaluate (process_if_expr, c, case_idx, NULL) != 1.0)
+      && expr_evaluate_num (process_if_expr, c, case_idx) != 1.0)
     return 1;
 
   return 0;
@@ -622,7 +622,7 @@ const struct case_sink_class null_sink_class =
 struct ccase *
 lagged_case (int n_before)
 {
-  assert (n_before <= n_lag);
+  assert (n_before >= 1 && n_before <= n_lag);
   if (n_before <= lag_count)
     {
       int index = lag_head - n_before;
@@ -661,12 +661,9 @@ cancel_transformations (void)
       free (t_trns[i]);
     }
   n_trns = f_trns = 0;
-  if (m_trns > 32)
-    {
-      free (t_trns);
-      t_trns=NULL;
-      m_trns = 0;
-    }
+  free (t_trns);
+  t_trns=NULL;
+  m_trns = 0;
 }
 \f
 /* Creates a case source with class CLASS and auxiliary data AUX