mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
typeset: fix short integer restriction (#166)
This commit corrects how shortint was being applied to various possible typeset variables in error. The short integer option modifier 'typeset -s' should only be able to be applied if the the variable is also an integer. Several issues were resolved with this fix: - 'typeset -s': created a short integer having an invalid base of zero. 'typeset -s foo' created 'typeset -s -i 0 foo=0' and now will result in an empty string. - 'typeset -sL': previously resulted in a segmentation fault. The following are the various incorrect 'typeset' instances that have been fixed: $ 'export foo; typeset -s foo; readonly foo; typeset -p foo' (before) typeset -x -r -s -i 0 foo=0 ( after) typeset -x -r foo $ 'typeset -sL foo=1*2; typeset -p foo' (before) Segmentation fault (core dumped) ( after) typeset -L 3 foo='1*2' $ 'typeset -sR foo=1*2; typeset -p foo' (before) typeset -s -i foo=2 ( after) typeset -R 3 foo='1*2' $ 'typeset -sZ foo=1*2; typeset -p foo' (before) typeset -F 0 foo=2 ( after) typeset -Z 3 -R 3 foo='1*2' src/cmd/ksh93/bltins/typeset.c: b_typeset(): - Add conditional check within the 's' option to only apply NV_SHORT as well as remove any NV_LONG flag if NV_INTEGER flag was set. - Relocate shortint conditional logic to the 'i' option. src/cmd/ksh93/tests/attributes.sh: - Adjust regression tests for '-s' and add '-si' check.
This commit is contained in:
parent
5491fe9724
commit
fe05350f2d
3 changed files with 18 additions and 7 deletions
4
NEWS
4
NEWS
|
@ -5,6 +5,10 @@ Any uppercase BUG_* names are modernish shell bug IDs.
|
|||
|
||||
2021-02-01:
|
||||
|
||||
- Fixed a bug in 'typeset': the '-s' modifier option for short integer will
|
||||
now only be applied if the integer option '-i' is also present, avoiding
|
||||
inconsistent results and a crash.
|
||||
|
||||
- Fixed: scalar arrays (-a) and associative arrays (-A) of a type created by
|
||||
'enum' allowed values not specified by the enum type, corrupting results.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue