"eshopts_push -s autocd; eshopts_pop" (i.e. the first option listed
by "shopt -p") would not restore the option because of bogus whitespace
in the saved string.

Signed-off-by: Ulrich Müller <u...@gentoo.org>
---
 eclass/estack.eclass | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/eclass/estack.eclass b/eclass/estack.eclass
index c0823adb03f7..d00c931e117d 100644
--- a/eclass/estack.eclass
+++ b/eclass/estack.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 # @ECLASS: estack.eclass
@@ -156,7 +156,7 @@ evar_pop() {
 eshopts_push() {
        # Save both "shopt" and "set -o" option sets, because otherwise
        # restoring posix would disable expand_aliases by side effect. #662586
-       estack_push eshopts "$(shopt -p -o) $(shopt -p)"
+       estack_push eshopts "$(shopt -p -o; shopt -p)"
        if [[ $1 == -[su] ]] ; then
                [[ $# -le 1 ]] && return 0
                shopt "$@" || die "${FUNCNAME}: bad options to shopt: $*"
-- 
2.41.0


Reply via email to