Fix PECLASS logic inside inherit() so that ECLASS is always restored to the
authorZac Medico <zmedico@gentoo.org>
Sun, 8 Mar 2009 06:53:55 +0000 (06:53 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 8 Mar 2009 06:53:55 +0000 (06:53 -0000)
correct value after recursion (previously it would be restored to the wrong
value if more than one eclass was passed into the inherit call).

svn path=/main/trunk/; revision=12783

bin/ebuild.sh

index d1ff26aba6af1368e27209befb5d6d1e697de5de..ff61f07d4dc27116cda5fc5e0c560d77dc8b49ed 100755 (executable)
@@ -1158,7 +1158,7 @@ inherit() {
 
        local location
        local olocation
-       local PECLASS
+       local PECLASS=$ECLASS
        local export_funcs_var x
 
        local B_IUSE
@@ -1169,8 +1169,6 @@ inherit() {
                location="${ECLASSDIR}/${1}.eclass"
                olocation=""
 
-               # PECLASS is used to restore the ECLASS var after recursion.
-               PECLASS="$ECLASS"
                export ECLASS="$1"
                export_funcs_var=__export_functions_${ECLASS/-/___}
                unset $export_funcs_var
@@ -1258,11 +1256,15 @@ inherit() {
 
                hasq $1 $INHERITED || export INHERITED="$INHERITED $1"
 
-               export ECLASS="$PECLASS"
-
                shift
        done
        ((--ECLASS_DEPTH)) # Returns 1 when ECLASS_DEPTH reaches 0.
+       if (( ECLASS_DEPTH > 1 )) ; then
+               # PECLASS is used to restore the ECLASS var after recursion.
+               export ECLASS=$PECLASS
+       else
+               unset ECLASS
+       fi
        return 0
 }