10afa189d5
In run.c::assign(), assigning to $0 from $F, a field, where F >= 2, produces an incoherent cell. The assignment occurs in two steps, first the string value and then the float. When the string value is assigned to $0, setsval invalidates the fields. If FS hasn't changed, after getfval rebuilds the fields, NF = 1 and F >= 2, therefore $F is definitely uninitialized. The result is a float val of 0.0, producing a boolean false in the pattern expression. Coercing a string comparison gives the expected result because the incoherent cell has the correct string value, which is not empty and evaluates to true. |
||
---|---|---|
.. | ||
awk.h | ||
awkgram.y | ||
lex.c | ||
lib.c | ||
main.c | ||
maketab.c | ||
mkfile | ||
parse.c | ||
popen.c | ||
proto.h | ||
re.c | ||
run.c | ||
tran.c |