]> git.pld-linux.org Git - packages/gawk.git/blame - gawk-3.1.5-num2str.patch
- patches from fedora
[packages/gawk.git] / gawk-3.1.5-num2str.patch
CommitLineData
fc8c9395 1--- gawk-3.1.5/node.c.num2str 2005-07-26 20:07:43.000000000 +0200
2+++ gawk-3.1.5/node.c 2005-12-22 19:41:55.000000000 +0100
3@@ -151,6 +151,7 @@
4 register char *sp = buf;
5 double val;
6 char *orig, *trans, save;
7+ register long num;
8
9 if (! do_traditional && (s->flags & INTLSTR) != 0) {
10 save = s->stptr[s->stlen];
11@@ -163,9 +164,12 @@
12 return tmp_string(trans, strlen(trans));
13 }
14
15- /* not an integral value, or out of range */
16- if ((val = double_to_int(s->numbr)) != s->numbr
17- || val < LONG_MIN || val > LONG_MAX) {
18+ /* conversion to long overflows, or out of range, or not integral */
19+ val = double_to_int(s->numbr);
20+ num = (long) val;
21+ if ( (s->numbr > 0 && num < 0)
22+ || (s->numbr < 0 && num > 0)
23+ || val < LONG_MIN || val > LONG_MAX || val != s->numbr) {
24 /*
25 * Once upon a time, if GFMT_WORKAROUND wasn't defined,
26 * we just blindly did this:
27@@ -199,9 +203,7 @@
28
29 goto no_malloc;
30 } else {
31- /* integral value */
32- /* force conversion to long only once */
33- register long num = (long) val;
34+ /* integral value, in range, too! */
35 if (num < NVAL && num >= 0) {
36 sp = (char *) values[num];
37 s->stlen = 1;
This page took 0.073869 seconds and 4 git commands to generate.