58 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.5 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.)
 | 
						|
 | 
						|
15. getline-numeric: The `getline xx < file' syntax did not check if
 | 
						|
values were numeric, in discordance from POSIX. Test case adapted from
 | 
						|
one posted by Ben Bacarisse <ben.usenet@bsb.me.uk> in comp.lang.awk,
 | 
						|
January 2019.
 |