ash: main: Only set savestatus in exitcmd
authorDenys Vlasenko <vda.linux@googlemail.com>
Fri, 14 Feb 2020 16:32:22 +0000 (17:32 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 16 Feb 2020 18:14:45 +0000 (19:14 +0100)
Upstream commit:

    Date: Sat, 19 May 2018 02:39:38 +0800
    main: Only set savestatus in exitcmd

    Currently exitcmd sets exitstatus and then savestatus if the latter
    was previously set.  In fact, as exitcmd always raises an exception
    and will either end up in the setjmp call in main() or exitshell(),
    where exitstatus is always replaced by savestatus if set, we only
    need to set savestatus.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/ash.c

index 270a338d92410643df5378303edf304721588fc1..db7dffc72a6b6044f13e9e4d6c8a62d962111deb 100644 (file)
@@ -13427,13 +13427,8 @@ exitcmd(int argc UNUSED_PARAM, char **argv)
        if (stoppedjobs())
                return 0;
 
-       if (argv[1]) {
-               int status = number(argv[1]);
-
-               exitstatus = status;
-               if (savestatus >= 0)
-                       savestatus = status;
-       }
+       if (argv[1])
+               savestatus = number(argv[1]);
 
        raise_exception(EXEXIT);
        /* NOTREACHED */