- Previously, ksh did not allocate the correct amount of memory for its data structures containing information about file descriptors. When running a task that used file descriptors extensively, ksh terminated unexpectedly with a segmentation fault. With this update, the proper amount of memory is allocated and ksh no longer crashes if file descriptors are used extensively.
- Previously, ksh did not always wait for a pipeline to complete when the pipefail option was used. Consequently, a failed exit status was erroneously reported even when the pipeline had not failed. With this update, the code has been improved and the pipefail option now functions as expected.
- BZ#702013, BZ#728900
- When running a ksh script the exit code of a child process was not preserved. Consequently, when a script asked for such an exit code, the wrong value was reported. With this update, an upstream patch has been applied which fixes the problem.
- File name completion used after an environment variable failed and ksh reported a "bad substitution" error. With this update, an upstream patch has been applied which fixes the problem.
- In POSIX functions, a function defined without using the, "function", keyword, the value of the variable "$0" was changed to the name of the function instead of keeping the original value, the name of the caller function. With this update an upstream patch has been applied to correct the code and ksh keeps the name of the caller function in "$0" as expected.
- Previously, when the ksh built-in "kill" command was called with a very large, non-existent PID value, it was interpreted as " -1". The "-1" argument to the kill command is for terminating all processes. Consequently, all processes owned by the user were killed. With this update a patch has been applied and ksh now checks for a valid process ID.
- If the IFS variable was unset inside a function used in a script, the memory being used was erroneously freed. Consequently, ksh would terminate unexpectedly. With this update, an upstream patch has been applied which still allows the IFS variable to be unset, but no longer frees the memory. Thus the problem is fixed, and ksh no longer crashes in the scenario described.
- Previously, ksh treated an array declaration as a definition. Consequently, the array contained one element after the declaration. This bug has been fixed, and now an array is correctly reported as empty after a declaration.
- Previously, when using ksh, ksh became unresponsive when pipes were used in a "eval" argument. With this update an upstream patch has been applied and the ksh no longer hangs in the scenario described.
- ksh could return the exit code of the previous process to have used the same PID number, when PID numbers were being reused after many hundreds of iterations of a script. With this update the code has been fixed and the error no longer occurs in the scenario described.
- When exiting a subshell after a command substitution, ksh could prematurely exit without any error. With this update, ksh no longer terminates under these circumstances and all subsequent commands are processed correctly.