1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-01 21:51:40 +02:00

33816, 33819: GLOB_ASSIGN changes integer and floating type variables to string scalars

This commit is contained in:
Barton E. Schaefer 2014-11-28 13:30:22 -08:00
parent 389954beec
commit 49d6aace41
3 changed files with 37 additions and 1 deletions

View file

@ -1,3 +1,11 @@
2014-11-28 Barton E. Schaefer <schaefer@brasslantern.com>
* 33819: Test/A06assign.ztst: regression tests for 33816
* 33816 (2nd part): Src/exec.c: GLOB_ASSIGN changes integer and
floating type variables to string scalars rather than treat single
match file names as arithmetic expressions
2014-11-28 Wayne Davison <wayned@users.sourceforge.net>
* unposted: avoid compiler warning about a set-but-not-used var.

View file

@ -2243,8 +2243,16 @@ addvars(Estate state, Wordcode pc, int addflags)
state->pc = opc;
return;
}
if (isset(GLOBASSIGN) || !isstr)
if (!isstr || (isset(GLOBASSIGN) &&
haswilds((char *)getdata(firstnode(vl))))) {
globlist(vl, 0);
/* Unset the parameter to force it to be recreated
* as either scalar or array depending on how many
* matches were found for the glob.
*/
if (isset(GLOBASSIGN))
unsetparam(name);
}
if (errflag) {
state->pc = opc;
return;

View file

@ -1,5 +1,10 @@
# Tests of parameter assignments
%prep
mkdir assign.tmp && cd assign.tmp
touch tmpfile1 tmpfile2
%test
typeset -A assoc
@ -413,3 +418,18 @@
>world
>worldliness
>world
integer i n x
float f
setopt globassign
i=tmpfile1
n=tmp*
x=*2
f=2+2
typeset -p i n x f
0:GLOB_ASSIGN with numeric types
>typeset -i i=0
>typeset -a n
>n=(tmpfile1 tmpfile2)
>typeset x=tmpfile2
>typeset -E f=4.000000000e+00