summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2016-01-14 16:38:58 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2016-01-14 16:38:58 +0900
commit2e49a13163c0374cff0148b1d697dcbb192105b7 (patch)
tree9f4e73dafa73f4f9f36a3ae6cbb5526caf0461ec
parent4924856949fb5996005aeb19ce8475701a5f8c7a (diff)
parent787685a0b9d26cc916d08ecbd876cdcd10ebdadb (diff)
downloadmruby-2e49a13163c0374cff0148b1d697dcbb192105b7.tar.gz
mruby-2e49a13163c0374cff0148b1d697dcbb192105b7.zip
Merge pull request #3084 from syohex/all-zeros
Fix passing all zero string to Kernel#Integer
-rw-r--r--mrbgems/mruby-kernel-ext/test/kernel.rb2
-rw-r--r--src/string.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/mrbgems/mruby-kernel-ext/test/kernel.rb b/mrbgems/mruby-kernel-ext/test/kernel.rb
index c58fb465c..cc6af13a3 100644
--- a/mrbgems/mruby-kernel-ext/test/kernel.rb
+++ b/mrbgems/mruby-kernel-ext/test/kernel.rb
@@ -22,6 +22,8 @@ assert('Kernel#Integer') do
assert_equal(26, Integer("0x1a"))
assert_equal(930, Integer("0930", 10))
assert_equal(7, Integer("111", 2))
+ assert_equal(0, Integer("0"))
+ assert_equal(0, Integer("00000"))
assert_raise(TypeError) { Integer(nil) }
end
diff --git a/src/string.c b/src/string.c
index a3f337d4b..2b01cc3a5 100644
--- a/src/string.c
+++ b/src/string.c
@@ -2153,6 +2153,8 @@ mrb_str_len_to_inum(mrb_state *mrb, const char *str, size_t len, int base, int b
break;
}
}
+ if (*(p - 1) == '0')
+ p--;
}
if (p == pend) {
if (badcheck) goto bad;