Fix a couple of bugs reported by Ben Kujala
[pspp-builds.git] / src / vfm.c
index 89624165209e611dc13deb8215b94bcee16490e7..796e3bcff07eda9daac4101bb5793d8721d2dd8f 100644 (file)
--- a/src/vfm.c
+++ b/src/vfm.c
@@ -33,9 +33,8 @@
 #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"
@@ -340,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;
@@ -623,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;
@@ -662,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