54 lines
2.3 KiB
Plaintext
54 lines
2.3 KiB
Plaintext
List of bugs fixed.
|
|
|
|
1. ofs-rebuild: OFS value used to rebuild the record was incorrect.
|
|
Fixed August 19, 2014. Revised fix August 2018.
|
|
|
|
2. system-status: Instead of a floating-point division by 256, use
|
|
the wait(2) macros to create a reasonable exit status. Fixed March 12, 2016.
|
|
|
|
3. space: Use provided xisblank() function instead of ispace() for
|
|
matching [[:blank:]].
|
|
|
|
4. a-format: Add POSIX standard %a and %A to supported formats. Check
|
|
at runtime that this format is available.
|
|
|
|
5. decr-NF: Decrementing NF did not change $0. This is a decades-old
|
|
bug. There are interactions with the old and new value of OFS as well.
|
|
Most of the fix came from the NetBSD awk.
|
|
|
|
6. string-conv: String conversions of scalars were sticky. Once a
|
|
conversion to string happened, even with OFMT, that value was used until
|
|
a new numeric value was assigned, even if OFMT differed from CONVFMT,
|
|
and also if CONVFMT changed.
|
|
|
|
7. unary-plus: Unary plus on a string constant returned the string.
|
|
Instead, it should convert the value to numeric and give that value.
|
|
|
|
8. concat-assign-same: Concatenation previously evaluated both sides of the
|
|
expression before doing its work, which, since assign() evaluates to the cell
|
|
being assigned to, meant that expressions like "print (a = 1) (a = 2)" would
|
|
print "22" rather than "12".
|
|
|
|
9. missing-precision: When using the format string "%*s", the precision
|
|
argument was used without checking if it was present first.
|
|
|
|
10. missing-precision: When using the format string "%*s", the precision
|
|
argument was used without checking if it was present first.
|
|
|
|
11. fmt-overflow: The buffer used for OFMT/CONVFMT conversions was written
|
|
to with sprintf(), which meant that some conversions could write past the
|
|
end.
|
|
|
|
12. numeric-subsep, numeric-fs, numeric-output-seps, numerics-rs: If SUBSEP,
|
|
FS, RS, OFS, or ORS were set to a numeric value, then their string values
|
|
wouldn't always be generated before being needed.
|
|
|
|
13. subsep-overflow: The length of SUBSEP needs to be rechecked after
|
|
calling execute(), in case SUBSEP itself has been changed.
|
|
|
|
14. split-fs-from-array: If the third argument to split() comes from the
|
|
array passed as the second argument, then split() would previously read
|
|
from the freed memory and possibly produce incorrect results (depending
|
|
on the system's malloc()/free() behaviour.)
|
|
|