awk: temporarily fix for NaN() exceptions on 386

problem is NaN() produces a SNaN, not a QNaN... and on the 387,
storing 80 bit SNaN in register to a 64-bit memory destination
traps.

SNaN/QNaN encoding is machine specific. mips has the qiet/signaling
bit inverted.

disabling fp exception in main() now, but that sucks.

i think the best solution would be to not even call strtod() in
is_number() but just write a regex or a little state machine that
will only accept numbers without nan and ±inf.

that might even make it faster and is more robust than relying on
the os's strtod() details.
This commit is contained in:
cinap_lenrek 2016-04-30 05:12:20 +02:00
parent ce1edc3436
commit 974c4fc768

View file

@ -55,6 +55,8 @@ void main(int argc, char *argv[])
char *fs = nil, *marg;
int temp;
setfcr(getfcr() & ~FPINVAL);
Binit(&stdin, 0, OREAD);
Binit(&stdout, 1, OWRITE);
Binit(&stderr, 2, OWRITE);