summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--numeric.c4
-rwxr-xr-xt/op/arith.t9
2 files changed, 12 insertions, 1 deletions
diff --git a/numeric.c b/numeric.c
index ec93d6b48d..43636698ef 100644
--- a/numeric.c
+++ b/numeric.c
@@ -629,6 +629,10 @@ Perl_my_atof2(pTHX_ const char* orig, NV* value)
I32 ipart = 0; /* index into part[] */
I32 offcount; /* number of digits in least significant part */
+ /* leading whitespace */
+ while (isSPACE(*s))
+ ++s;
+
/* sign */
switch (*s) {
case '-':
diff --git a/t/op/arith.t b/t/op/arith.t
index 2847acb05f..8b8e2bce2b 100755
--- a/t/op/arith.t
+++ b/t/op/arith.t
@@ -1,6 +1,6 @@
#!./perl -w
-print "1..109\n";
+print "1..113\n";
sub try ($$) {
print +($_[1] ? "ok" : "not ok"), " $_[0]\n";
@@ -204,3 +204,10 @@ tryeq 106, 46339 * 46341, 0x7ffea80f;
tryeq 107, 46339 * -46341, -0x7ffea80f;
tryeq 108, -46339 * 46341, -0x7ffea80f;
tryeq 109, -46339 * -46341, 0x7ffea80f;
+
+# leading space should be ignored
+
+tryeq 110, 1 + " 1", 2;
+tryeq 111, 3 + " -1", 2;
+tryeq 112, 1.2, " 1.2";
+tryeq 113, -1.2, " -1.2";