]> git.kaiwu.me - njs.git/commitdiff
Fixed zero basis handling for scientific notation.
authorAndrey Zelenkov <zelenkov@nginx.com>
Wed, 7 Jun 2017 13:36:13 +0000 (16:36 +0300)
committerAndrey Zelenkov <zelenkov@nginx.com>
Wed, 7 Jun 2017 13:36:13 +0000 (16:36 +0300)
njs/njs_number.c
njs/test/njs_unit_test.c

index cd1179f37570e71077f21f315dda1bb4329cb61a..039c9c58741b4dcc79133dcdd7d9471afd768028 100644 (file)
@@ -154,8 +154,10 @@ njs_number_dec_parse(u_char **start, u_char *end)
                 p++;
             }
 
-            exponent = minus ? -exponent : exponent;
-            num = num * pow(10.0, exponent);
+            if (num != 0) {
+                exponent = minus ? -exponent : exponent;
+                num = num * pow(10.0, exponent);
+            }
         }
     }
 
index ff2e963b28eecccf59c9f6029ba759bffe2ac2b3..0639da4fceb602fa8032a6dbfd80be10622e2974 100644 (file)
@@ -191,6 +191,12 @@ static njs_unit_test_t  njs_test[] =
     { nxt_string("1.0e308"),
       nxt_string("1e+308") },
 
+    { nxt_string("0e309"),
+      nxt_string("0") },
+
+    { nxt_string("0e-309"),
+      nxt_string("0") },
+
     { nxt_string("1e"),
       nxt_string("SyntaxError: Unexpected token \"e\" in 1") },