From 3f54d09a5b8b6e4fd734abc8911e170d5967b5b0 Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Mon, 30 Jan 2023 11:03:50 +0100 Subject: bignum.c: rb_int_parse_cstr handle `0` strings [Bug #19390] We shouldn't check the string length when skipping zeros, as the string might only contains zero characters, resulting in an empty string. --- bignum.c | 1 - test/ruby/test_time.rb | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/bignum.c b/bignum.c index a1a659db09..cb2c3b6f07 100644 --- a/bignum.c +++ b/bignum.c @@ -4184,7 +4184,6 @@ rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits, } if (!c || ISSPACE(c)) --str; if (end) len = end - str; - ASSERT_LEN(); } c = *str; c = conv_digit(c); diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb index 38c1af6901..2bf6056a49 100644 --- a/test/ruby/test_time.rb +++ b/test/ruby/test_time.rb @@ -1426,4 +1426,8 @@ class TestTime < Test::Unit::TestCase t.deconstruct_keys(%i[year month sec nonexistent]) ) end + + def test_parse_zero_bigint + assert_equal 0, Time.new("2020-10-28T16:48:07.000Z").nsec, '[Bug #19390]' + end end -- cgit v1.2.1