mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-09-28 06:49:49 +02:00
42101 (tweaked): assigning shell status to array was broken
This commit is contained in:
parent
fa441fa20e
commit
805192311f
@ -1,3 +1,10 @@
|
||||
2018-05-11 Peter Stephenson <p.stephenson@samsung.com>
|
||||
|
||||
* 42101 (tweaked): dana: Src/exec.c, Test/A06assign.ztst:
|
||||
assigning shell status to array was broken.
|
||||
|
||||
* Src/exec.c (execcmd_exec):
|
||||
|
||||
2018-05-08 Peter Stephenson <p.stephenson@samsung.com>
|
||||
|
||||
* 42752: Completion/Unx/Command/_git: better completion
|
||||
|
@ -2750,7 +2750,7 @@ execcmd_exec(Estate state, Execcmd_params eparams,
|
||||
char *text;
|
||||
int save[10];
|
||||
int fil, dfil, is_cursh, do_exec = 0, redir_err = 0, i;
|
||||
int nullexec = 0, magic_assign = 0, forked = 0;
|
||||
int nullexec = 0, magic_assign = 0, forked = 0, old_lastval;
|
||||
int is_shfunc = 0, is_builtin = 0, is_exec = 0, use_defpath = 0;
|
||||
/* Various flags to the command. */
|
||||
int cflags = 0, orig_cflags = 0, checked = 0, oautocont = -1;
|
||||
@ -2775,6 +2775,7 @@ execcmd_exec(Estate state, Execcmd_params eparams,
|
||||
* If assignment but no command get the status from variable
|
||||
* assignment.
|
||||
*/
|
||||
old_lastval = lastval;
|
||||
if (!args && varspc)
|
||||
lastval = errflag ? errflag : cmdoutval;
|
||||
/*
|
||||
@ -3209,8 +3210,11 @@ execcmd_exec(Estate state, Execcmd_params eparams,
|
||||
return;
|
||||
}
|
||||
cmdoutval = use_cmdoutval ? lastval : 0;
|
||||
if (varspc)
|
||||
if (varspc) {
|
||||
/* Make sure $? is still correct for assignment */
|
||||
lastval = old_lastval;
|
||||
addvars(state, varspc, 0);
|
||||
}
|
||||
if (errflag)
|
||||
lastval = 1;
|
||||
else
|
||||
|
@ -199,6 +199,41 @@
|
||||
>a 1 2 3
|
||||
>a 1 2 3
|
||||
|
||||
# tests of array assignment using lastval ($?)
|
||||
|
||||
true
|
||||
array=( $? )
|
||||
print $array
|
||||
0:Assign $? to array (true)
|
||||
>0
|
||||
|
||||
false
|
||||
array=( $? )
|
||||
print $array
|
||||
0:Assign $? to array (false)
|
||||
>1
|
||||
|
||||
true
|
||||
typeset array=( $? )
|
||||
print $array
|
||||
0:Assign $? to array with typeset (true)
|
||||
>0
|
||||
|
||||
false
|
||||
typeset array=( $? )
|
||||
print $array
|
||||
0:Assign $? to array with typeset (false)
|
||||
>1
|
||||
|
||||
array=( )
|
||||
true
|
||||
array+=( $? )
|
||||
false
|
||||
array+=( $? )
|
||||
print $array
|
||||
0:Append $? to array (true+false)
|
||||
>0 1
|
||||
|
||||
# tests of var+=scalar
|
||||
|
||||
s+=foo
|
||||
|
Loading…
Reference in New Issue
Block a user