From 0ce8797d6b342d20dc2ec4661551c1e338603e4c Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 8 Mar 2009 06:53:55 +0000 Subject: Fix PECLASS logic inside inherit() so that ECLASS is always restored to the 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 | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'bin/ebuild.sh') diff --git a/bin/ebuild.sh b/bin/ebuild.sh index d1ff26aba..ff61f07d4 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -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 } -- cgit v1.2.3-1-g7c22