hush: fix readonly2.tests failure
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
f645e1573c
commit
cf5110978b
11
shell/hush.c
11
shell/hush.c
@ -2287,7 +2287,18 @@ static struct variable *set_vars_and_save_old(char **strings)
|
||||
if (var_pp) {
|
||||
var_p = *var_pp;
|
||||
if (var_p->flg_read_only) {
|
||||
char **p;
|
||||
bb_error_msg("%s: readonly variable", *s);
|
||||
/*
|
||||
* "VAR=V BLTIN" unsets VARs after BLTIN completes.
|
||||
* If VAR is readonly, leaving it in the list
|
||||
* after asssignment error (msg above)
|
||||
* causes doubled error message later, on unset.
|
||||
*/
|
||||
debug_printf_env("removing/freeing '%s' element\n", *s);
|
||||
free(*s);
|
||||
p = s;
|
||||
do { *p = p[1]; p++; } while (*p);
|
||||
goto next;
|
||||
}
|
||||
/* Remove variable from global linked list */
|
||||
|
@ -1,4 +1,5 @@
|
||||
hush: a=Z: readonly variable
|
||||
Visible:42
|
||||
|
||||
hush: a=Z: readonly variable
|
||||
Visible:42
|
||||
|
@ -3,4 +3,5 @@ readonly a=A
|
||||
|
||||
# external commands and builtins should behave the same:
|
||||
(exit 42); a=Z echo "Visible:$?"
|
||||
echo
|
||||
(exit 42); a=Z env echo "Visible:$?"
|
||||
|
Loading…
Reference in New Issue
Block a user