Fix new bug where if exitstatus was not correct if condition
authorChristos Zoulas <christos@ucbvax.Berkeley.EDU>
Sun, 14 May 1995 14:54:16 +0000 (06:54 -0800)
committerChristos Zoulas <christos@ucbvax.Berkeley.EDU>
Sun, 14 May 1995 14:54:16 +0000 (06:54 -0800)
failed

SCCS-vsn: bin/sh/eval.c 8.6

usr/src/bin/sh/eval.c

index 3814b38..dcafd0c 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)eval.c     8.5 (Berkeley) %G%";
+static char sccsid[] = "@(#)eval.c     8.6 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <signal.h>
 #endif /* not lint */
 
 #include <signal.h>
@@ -203,19 +203,17 @@ evaltree(n, flags)
                evalsubshell(n, flags);
                break;
        case NIF: {
                evalsubshell(n, flags);
                break;
        case NIF: {
-               int status = 0
+               int status; 
 
                evaltree(n->nif.test, EV_TESTED);
 
                evaltree(n->nif.test, EV_TESTED);
+               status = exitstatus;
+               exitstatus = 0;
                if (evalskip)
                        goto out;
                if (evalskip)
                        goto out;
-               if (exitstatus == 0) {
+               if (status == 0)
                        evaltree(n->nif.ifpart, flags);
                        evaltree(n->nif.ifpart, flags);
-                       status = exitstatus;
-               } else if (n->nif.elsepart) {
+               else if (n->nif.elsepart)
                        evaltree(n->nif.elsepart, flags);
                        evaltree(n->nif.elsepart, flags);
-                       status = exitstatus;
-               }
-               exitstatus = status;
                break;
        }
        case NWHILE:
                break;
        }
        case NWHILE: