Merge remote-tracking branch 'origin/master' into sheet
[pspp] / src / language / control / loop.c
index 8f4ff8251648a8cf93958347de0ce69b5d6970af..10d57105ccc8189d582be05dd501e04ae60a4a38 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 1997-9, 2000, 2009, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 1997-9, 2000, 2009-2011 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -19,8 +19,8 @@
 #include "language/control/control-stack.h"
 
 #include "data/case.h"
+#include "data/dataset.h"
 #include "data/dictionary.h"
-#include "data/procedure.h"
 #include "data/settings.h"
 #include "data/transformations.h"
 #include "data/variable.h"
@@ -61,7 +61,7 @@ struct loop_trns
 
     /* Iteration limit. */
     int max_pass_count;         /* Maximum number of passes (-1=unlimited). */
-    int pass;                  /* Number of passes thru the loop so far. */
+    int pass;                  /* Number of passes through the loop so far. */
 
     /* a=a TO b [BY c]. */
     struct variable *index_var; /* Index variable. */
@@ -261,7 +261,7 @@ parse_index_clause (struct dataset *ds, struct lexer *lexer,
     }
   if (loop->last_expr == NULL)
     {
-      lex_sbc_missing (lexer, "TO");
+      lex_sbc_missing ("TO");
       return false;
     }
   if (loop->by_expr == NULL)
@@ -367,12 +367,8 @@ end_loop_trns_proc (void *loop_, struct ccase **c, casenumber case_num UNUSED)
     goto break_out;
 
   /* MXLOOPS limiter. */
-  if (loop->max_pass_count >= 0)
-    {
-      if (loop->pass >= loop->max_pass_count)
-        goto break_out;
-      loop->pass++;
-    }
+  if (loop->max_pass_count >= 0 && ++loop->pass >= loop->max_pass_count)
+    goto break_out;
 
   /* Indexing clause limiter: counting downward. */
   if (loop->index_var != NULL)