From ebe8fe6d9184d432c56ea5fff79af2e0f3f516de Mon Sep 17 00:00:00 2001 From: Bart Schaefer Date: Thu, 19 Sep 2002 17:51:45 +0000 Subject: 17692: Prevent typeset of a positional parameter before it can do damage, and improve the error message about it. --- ChangeLog | 5 +++++ Src/builtin.c | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4f2d49301..7ad21af73 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-09-19 Bart Schaefer + + * 17692: Src/builtin.c: Prevent typeset of a positional parameter + before it can do damage, and improve the error message about it. + 2002-09-19 Clint Adams * 17252: Sven: Completion/Unix/Type/_path_files: fix for use of (z) diff --git a/Src/builtin.c b/Src/builtin.c index c43751711..dd553cf1c 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -1825,7 +1825,7 @@ typeset_single(char *cname, char *pname, Param pm, int func, "%s: array elements must be scalar", pname, 0); return NULL; } - } else if (isident(pname)) { + } else if (isident(pname) && !idigit(*pname)) { /* * Create a new node for a parameter with the flags in `on' minus the * readonly flag @@ -1834,7 +1834,10 @@ typeset_single(char *cname, char *pname, Param pm, int func, DPUTS(!pm, "BUG: parameter not created"); pm->ct = auxlen; } else { - zerr("not an identifier: %s", pname, 0); + if (isident(pname)) + zerrnam(cname, "not valid in this context: %s", pname, 0); + else + zerrnam(cname, "not an identifier: %s", pname, 0); return NULL; } -- cgit 1.4.1