Hi, 

I have a patch file (crash.patch) for bug #31016 . 

Here is the link to the bug report 

https://savannah.gnu.org/bugs/index.php?31016 


Terry 
diff -Naur pspp-0.7.5-g8a0397.orig/src/language/control/repeat.c pspp-0.7.5-g8a0397/src/language/control/repeat.c
--- pspp-0.7.5-g8a0397.orig/src/language/control/repeat.c	2010-09-26 00:25:16.000000000 -0500
+++ pspp-0.7.5-g8a0397/src/language/control/repeat.c	2010-09-27 14:31:47.658673980 -0500
@@ -286,6 +286,33 @@
   return true;
 }
 
+/* Returns true if LINE contains the keyword 'end' followed by anything other than 'if' or 'loop', Returns false
+   otherwise. */
+static bool
+recognize_invalid_end(struct substring line)
+{
+  bool result;
+  
+  result = false;
+  if(recognize_keyword (&line, "end"))
+  {
+     struct substring line_copy = line;
+     
+     result = true;
+     if(recognize_keyword (&line, "if"))
+     {
+        return false;   
+     }
+
+     if(recognize_keyword (&line_copy, "loop"))
+     {
+        return false;   
+     }
+  }
+  
+  return result;
+}
+
 /* Read all the lines we are going to substitute, inside the DO
    REPEAT...END REPEAT block. */
 static bool
@@ -343,6 +370,11 @@
 	  ds_destroy (&text);
           return true;
         }
+      else if (recognize_invalid_end (ds_ss (&text)))
+        {
+          msg (SE, _("Invalid line '%s'."), text.ss.string);
+          return false;
+        }
       ds_destroy (&text);
 
       /* Add the line to the list. */
diff -Naur pspp-0.7.5-g8a0397.orig/src/ui/terminal/main.c pspp-0.7.5-g8a0397/src/ui/terminal/main.c
--- pspp-0.7.5-g8a0397.orig/src/ui/terminal/main.c	2010-09-26 00:25:16.000000000 -0500
+++ pspp-0.7.5-g8a0397/src/ui/terminal/main.c	2010-09-27 13:41:24.762669180 -0500
@@ -127,6 +127,7 @@
 	  msg (SE, _("Stopping syntax file processing here to avoid "
 		     "a cascade of dependent command failures."));
 	  getl_abort_noninteractive (the_source_stream);
+	  break;
 	}
       else if (msg_ui_too_many_errors ())
         getl_abort_noninteractive (the_source_stream);
_______________________________________________
pspp-dev mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/pspp-dev

Reply via email to