]> git.pld-linux.org Git - packages/gawk.git/blob - gawk-3.1.5-num2str.patch
- patches from fedora
[packages/gawk.git] / gawk-3.1.5-num2str.patch
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.066046 seconds and 3 git commands to generate.