1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00

Fix 'typeset -xu', 'typeset -xl' (rhbz#1188377)

'typeset -xu' and 'typeset -xl' would export the variable but fail
to change case in the value under certain conditions.

Original patch:
642af4d6/f/ksh-20120801-xufix.patch

This applies the patch essentially without change and adds a
regression test based on the reproducer provided in the RH bug.

Unfortunately there is no description of how the patch works and
it's a little obscure to me. As far as I can figure out, the cause
of the problem was that nv_newattr() erroneously processed a
nonexistent size option-argument such as what can be given to
options like typeset -F, e.g. typeset -F3 for 3 digits after the
dot. A nonexistent size argument is represented by the value of -1.
This commit is contained in:
Martijn Dekker 2020-09-30 00:34:02 +02:00
parent ba0b1bba2b
commit fdb9781ebb
5 changed files with 27 additions and 2 deletions

View file

@ -2954,10 +2954,12 @@ void nv_newattr (register Namval_t *np, unsigned newatts, int size)
nv_onattr(np,NV_EXPORT);
sh_envput(shp->env,np);
}
if((n^newatts)==NV_EXPORT)
if((n^newatts)==NV_EXPORT && size==-1)
return;
}
oldsize = nv_size(np);
if(size==-1)
size = oldsize;
if((size==oldsize|| (n&NV_INTEGER)) && !trans && ((n^newatts)&~NV_NOCHANGE)==0)
{
if(size)