X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fcontrol%2Fdo-if.c;h=83de0e39a31a73574bfe0fa0b781dafc96eafbf0;hb=b078357653b9eebbba49a088c81c3dd935b58698;hp=612b08565cf2664fa24b57eee1c97d00d187facc;hpb=9ade26c8349b4434008c46cf09bc7473ec743972;p=pspp diff --git a/src/language/control/do-if.c b/src/language/control/do-if.c index 612b08565c..83de0e39a3 100644 --- a/src/language/control/do-if.c +++ b/src/language/control/do-if.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2009-2011 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2009-2012 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,7 +19,7 @@ #include #include "data/case.h" -#include "data/procedure.h" +#include "data/dataset.h" #include "data/transformations.h" #include "data/value.h" #include "language/command.h" @@ -124,9 +124,12 @@ int cmd_else (struct lexer *lexer UNUSED, struct dataset *ds) { struct do_if_trns *do_if = ctl_stack_top (&do_if_class); - assert (ds == do_if->ds); + if (do_if == NULL || !must_not_have_else (do_if)) return CMD_CASCADING_FAILURE; + + assert (ds == do_if->ds); + add_else (do_if); return CMD_SUCCESS; } @@ -136,11 +139,11 @@ int cmd_end_if (struct lexer *lexer UNUSED, struct dataset *ds) { struct do_if_trns *do_if = ctl_stack_top (&do_if_class); - assert (ds == do_if->ds); if (do_if == NULL) return CMD_CASCADING_FAILURE; + assert (ds == do_if->ds); ctl_stack_pop (do_if); return CMD_SUCCESS; @@ -174,7 +177,7 @@ must_not_have_else (struct do_if_trns *do_if) { if (has_else (do_if)) { - msg (SE, _("This command may not follow ELSE in DO IF...END IF.")); + msg (SE, _("This command may not follow %s in %s ... %s."), "ELSE", "DO IF", "END IF"); return false; } else