diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2018-07-13 13:56:10 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2018-07-13 13:56:10 +0300 |
commit | 8dba5f4c900239d01897e2197ddd79bcf5d9b034 (patch) | |
tree | ef1ede8e0f191df3b41df219f4a98fbbe3b0d9d2 /node.c | |
parent | 18ff7b4b066fdd606a66e90b1f3b489840e09560 (diff) | |
download | egawk-8dba5f4c900239d01897e2197ddd79bcf5d9b034.tar.gz egawk-8dba5f4c900239d01897e2197ddd79bcf5d9b034.tar.bz2 egawk-8dba5f4c900239d01897e2197ddd79bcf5d9b034.zip |
Output +inf, +nan etc. also, so that output can be input. Doc, tests, fixed.
Diffstat (limited to 'node.c')
-rw-r--r-- | node.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -219,10 +219,13 @@ r_format_val(const char *format, int index, NODE *s) * < and > so that things work correctly on systems with 64 bit integers. */ - /* not an integral value, or out of range */ - if ((val = double_to_int(s->numbr)) != s->numbr + if (out_of_range(s)) { + const char *result = format_nan_inf(s, 'g'); + return make_string(result, strlen(result)); + } else if ((val = double_to_int(s->numbr)) != s->numbr || val <= LONG_MIN || val >= LONG_MAX ) { + /* not an integral value, or out of integer range */ /* * Once upon a time, we just blindly did this: * sprintf(sp, format, s->numbr); |