From b8a36eea87836c8156e4d3d587cb57252e02c7a2 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Sat, 13 Sep 2008 19:59:13 +0000 Subject: 25662: declare -p should never create arguments --- Src/builtin.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'Src') diff --git a/Src/builtin.c b/Src/builtin.c index 8adc7fcb1..8246453f4 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -2473,10 +2473,17 @@ bin_typeset(char *name, char **argv, Options ops, int func) /* Take arguments literally. Don't glob */ while ((asg = getasg(*argv++))) { - if (!typeset_single(name, asg->name, - (Param) (paramtab == realparamtab ? - gethashnode2(paramtab, asg->name) : - paramtab->getnode(paramtab, asg->name)), + HashNode hn = (paramtab == realparamtab ? + gethashnode2(paramtab, asg->name) : + paramtab->getnode(paramtab, asg->name)); + if (OPT_ISSET(ops,'p')) { + if (hn) + printparamnode(hn, printflags); + else + zwarnnam(name, "no such variable: %s", asg->name); + continue; + } + if (!typeset_single(name, asg->name, (Param)hn, func, on, off, roff, asg->value, NULL, ops, 0)) returnval = 1; -- cgit 1.4.1