I'm not convinced this is a bug (although please check my reasoning);
the code is still present in ast-ksh.2012-09-11 upstream source but has
moved to name.c around line 1201.
That (horrible) block of code is:
1 if((nq = (*fp->disc->createf)(np,cp+1,flags,fp)) ==
np)
2 {
3 add = NV_ADD;
4 shp->last_table = 0;
5 break;
6 }
7 else if(np=nq)
8 {
9 if((c =
*(sp=cp=dp->last=fp->last))==0)
10 {
11
if(nv_isarray(np) && sp[-1]!=']')
12
nv_putsub(np,NIL(char*),ARRAY_UNDEF);
13 return(np);
14 }
15 }
(all 3 or 4 levels down in the middle of a do/while loop)
My reading of that is that (using my line numbering I added above)
(1) Assigning nq a new value from the call to *createf, and if it matches np
execute the block lines 3-5
(7) If the new nq didn't match np, then we get to the if (np=nq) which is
the line in question, they can't
be intending to compare np with nq because that's what (1) just did, so
I think they really intend to do an
assignment to np, which possibly gets returned at (13)
but more importantly the 'np is set up for the next iteration around the
do/while loop.
Yeuch!
If you're not sure you might try reporting upstream at
http://www.kornshell.com/
Dave
** Changed in: ksh (Ubuntu)
Status: New => Invalid
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/218837
Title:
Assigning instead of Comparing
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ksh/+bug/218837/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs