Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #14356

delcare -a on a nameref in a function modifies nameref instead of target

Path csiph.com!fu-berlin.de!usenet.stanford.edu!not-for-mail
From Grisha Levit <grishalevit@gmail.com>
Newsgroups gnu.bash.bug
Subject delcare -a on a nameref in a function modifies nameref instead of target
Date Tue, 17 Jul 2018 17:47:20 -0400
Lines 22
Approved bug-bash@gnu.org
Message-ID <mailman.3736.1531864056.1292.bug-bash@gnu.org> (permalink)
NNTP-Posting-Host lists.gnu.org
Mime-Version 1.0
Content-Type text/plain; charset="UTF-8"
X-Trace usenet.stanford.edu 1531864057 20659 208.118.235.17 (17 Jul 2018 21:47:37 GMT)
X-Complaints-To action@cs.stanford.edu
To bug-bash <bug-bash@gnu.org>
Envelope-to bug-bash@gnu.org
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=obcvdHHbNwkQUPSrWA/W75UWKJyAGSynLuIQjZ4wkfw=; b=kmNwOXrNdX+FkLD3Se8PhLxczVTzAUtR1MWyGvsZkZICT5BBq3lJ4tiywF/oA3fDOo MuMBiPAO9VOTizjo6EWM1Tara2fvMw0LeZUqM1OAIWPSDjUU7gNH+9fqG3gyv4r4P5ou 9sZ8yt5sACYPaGrmGMNKM4erzrftmR9jkA4NmkLBOUycbJ6p56qryp4GlGcAc6At70PM Z2HXCmmUOL/K+Ycnm1HOnsDbB8QoiIiehNsB5JIZvISbYbZG/Hu8vRpcWuWMhFxrYMsb ml7XSDUOZZAx4hRBt/O+2NmSV3V2V2NCsmbEoq4gYo2GeBeZGAqiU/ygq10cd0w54irv Tqkg==
X-Google-DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=obcvdHHbNwkQUPSrWA/W75UWKJyAGSynLuIQjZ4wkfw=; b=UXdb44r4IJvdB0KH1vke3a+vLJbf465FblQlhp1yER1aV9P46IazVugYV6oCr2Ubj3 z6Lrc81t13sylIHKzc8Ldz7WbJnWi6/RK2FY/UtYofQ9LyrpnY5YA61s0sZS/T+PETED qYQSI5F/ULDBb5MAaKGAEQ+oBW8TX1ZTGi7zwG7UXwnw+jiQLyi5ohz0jjN0l+6G4tdH fBMcSdVfqxBZscd5Nbz8KpXB3AFcmzwPmac2FfrzsdfPWOimh52HujPk+Bt1nVou8mN1 24e9JQWmnAaZ4tCS8I8MRVi7SEDqvbSinnvbg/mcOlfxCO/S1i+tKflvWnBIGrKqu9Em Z2PA==
X-Gm-Message-State AOUpUlF0w3sxbYdoyTvyxzwavqFZJFleAKvYY1uEzwVSSAu0APCkXixG j0IE7iE9duhD76f7l7F5f16OHTc58jN7OPGksuS2tYV8
X-Google-Smtp-Source AAOMgpdPgB0kcW3a+AIpQMti5KAvQ08W6joEStKNInGPfe+ibwywYNqwL3WGQl74xKekvSqs8TVPbQxNlUsqF/si08I=
X-Received by 2002:a2e:9d0e:: with SMTP id t14-v6mr2554262lji.112.1531864051755; Tue, 17 Jul 2018 14:47:31 -0700 (PDT)
X-detected-operating-system by eggs.gnu.org: Genre and OS details not recognized.
X-Received-From 2a00:1450:4864:20::22a
X-BeenThere bug-bash@gnu.org
X-Mailman-Version 2.1.21
Precedence list
List-Id Bug reports for the GNU Bourne Again SHell <bug-bash.gnu.org>
List-Unsubscribe <https://lists.gnu.org/mailman/options/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=unsubscribe>
List-Archive <http://lists.gnu.org/archive/html/bug-bash/>
List-Post <mailto:bug-bash@gnu.org>
List-Help <mailto:bug-bash-request@gnu.org?subject=help>
List-Subscribe <https://lists.gnu.org/mailman/listinfo/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=subscribe>
Xref csiph.com gnu.bash.bug:14356

Show key headers only | View raw


At global scope this works as expected:

$ declare -n ref=var; declare -a ref=(X); declare -p ref var
declare -n ref="var"
declare -a var=([0]="X")

But in a function, we end up with the nameref variable having both the
`a' and `n' attributes and nothing in the target:

$ f() { declare -n ref=var; declare ref=(X); declare -p ref var; }; f
declare -an ref=([0]="X")
-bash: declare: var: not found

And a slight modification ends up modifying a global variable instead:

$  f() { declare -n ref=var; declare -a ref; ref=(X); declare -p ref
var; }; f; declare -p ref var
declare -an ref=()
-bash: declare: var: not found
declare -a ref=([0]="X")
-bash: declare: var: not found

Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread


Thread

delcare -a on a nameref in a function modifies nameref instead of target Grisha Levit <grishalevit@gmail.com> - 2018-07-17 17:47 -0400

csiph-web