From 66d1582c07db57b4a1a1cd0ab7d79f042be80faa Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 17 Oct 2002 07:27:00 +0000 Subject: * object.c (rb_str_to_dbl): RString ptr might be NULL. * object.c (rb_cstr_to_dbl): p pointer might be NULL. * bignum.c (rb_str_to_inum): RString ptr might be NULL. * bignum.c (rb_cstr_to_inum): str pointer might be NULL. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- bignum.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'bignum.c') diff --git a/bignum.c b/bignum.c index 3cf4544cb4..0d23189955 100644 --- a/bignum.c +++ b/bignum.c @@ -319,6 +319,10 @@ rb_cstr_to_inum(str, base, badcheck) VALUE z; BDIGIT *zds; + if (!str) { + if (badcheck) goto bad; + return INT2FIX(0); + } if (badcheck) { while (ISSPACE(*str)) str++; } @@ -501,16 +505,18 @@ rb_str_to_inum(str, base, badcheck) StringValue(str); s = RSTRING(str)->ptr; - len = RSTRING(str)->len; - if (s[len]) { /* no sentinel somehow */ - char *p = ALLOCA_N(char, len+1); - - MEMCPY(p, s, char, len); - p[len] = '\0'; - s = p; - } - if (badcheck && len != strlen(s)) { - rb_raise(rb_eArgError, "string for Integer contains null byte"); + if (s) { + len = RSTRING(str)->len; + if (s[len]) { /* no sentinel somehow */ + char *p = ALLOCA_N(char, len+1); + + MEMCPY(p, s, char, len); + p[len] = '\0'; + s = p; + } + if (badcheck && len != strlen(s)) { + rb_raise(rb_eArgError, "string for Integer contains null byte"); + } } return rb_cstr_to_inum(s, base, badcheck); } -- cgit v1.2.3