From c9f4686694542543864895d6c61c1ef58d58a564 Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 7 Jan 2002 05:27:01 +0000 Subject: [PATCH] * string.c (rb_str_new2): NULL pointer check added. * class.c (rb_define_module_under): should locate predefined module using rb_const_defined_at(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 9 +++++++++ class.c | 4 ++-- range.c | 12 ++++++------ regex.c | 13 ------------- string.c | 3 +++ 5 files changed, 20 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index ef4f79fcd1..a83c3ecf15 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,10 +9,19 @@ Sat Jan 5 13:18:11 2002 Nobuyoshi Nakada * range.c (range_member): beginning check was wrong. [ruby-talk:30252] +Sat Jan 5 03:07:34 2002 Yukihiro Matsumoto + + * string.c (rb_str_new2): NULL pointer check added. + Sat Jan 5 00:19:12 2002 Nobuyoshi Nakada * parse.y (yycompile): strdup()'ed twice. +Fri Jan 4 18:29:10 2002 Michal Rokos + + * class.c (rb_define_module_under): should locate predefined + module using rb_const_defined_at(). + Fri Jan 4 17:23:49 2002 Nobuyoshi Nakada * misc/ruby-mode.el (ruby-forward-string): forward a string. [new] diff --git a/class.c b/class.c index edfc9dd098..238c3b3efe 100644 --- a/class.c +++ b/class.c @@ -266,8 +266,8 @@ rb_define_module_under(outer, name) ID id; id = rb_intern(name); - if (rb_const_defined(outer, id)) { - module = rb_const_get(rb_cObject, id); + if (rb_const_defined_at(outer, id)) { + module = rb_const_get(outer, id); if (TYPE(module) == T_MODULE) return module; rb_raise(rb_eTypeError, "%s::%s is not a module", diff --git a/range.c b/range.c index b18951dcbc..cd1413811f 100644 --- a/range.c +++ b/range.c @@ -106,7 +106,7 @@ range_eq(range, obj) } static int -r_eq(a,b) +r_eq(a, b) VALUE a, b; { VALUE r; @@ -119,22 +119,22 @@ r_eq(a,b) } static int -r_lt(a,b) +r_lt(a, b) VALUE a, b; { VALUE r = rb_funcall(a, id_cmp, 1, b); - if (NUM2LONG(r) < 0) return Qtrue; + if (rb_cmpint(r) < 0) return Qtrue; return Qfalse; } static int -r_le(a,b) +r_le(a, b) VALUE a, b; { VALUE r = rb_funcall(a, id_cmp, 1, b); - if (NUM2LONG(r) <= 0) return Qtrue; + if (rb_cmpint(r) <= 0) return Qtrue; return Qfalse; } @@ -144,7 +144,7 @@ r_gt(a,b) { VALUE r = rb_funcall(a, id_cmp, 1, b); - if (NUM2LONG(r) > 0) return Qtrue; + if (rb_cmpint(r) > 0) return Qtrue; return Qfalse; } diff --git a/regex.c b/regex.c index 4b99d90317..99847afba3 100644 --- a/regex.c +++ b/regex.c @@ -2377,19 +2377,6 @@ re_compile_pattern(pattern, size, bufp) if (*laststart == anychar_repeat) { bufp->options |= RE_OPTIMIZE_ANCHOR; } - else if (*laststart == on_failure_jump) { - int mcnt; - - laststart++; - EXTRACT_NUMBER_AND_INCR(mcnt, laststart); - if (*laststart == charset || *laststart == charset_not) { - p0 = laststart; - mcnt = *++p0; - p0 += mcnt+1; - mcnt = EXTRACT_UNSIGNED_AND_INCR(p0); - p0 += 8*mcnt; - } - } } bufp->used = b - bufp->buffer; diff --git a/string.c b/string.c index 49b44fa850..77794d9849 100644 --- a/string.c +++ b/string.c @@ -80,6 +80,9 @@ VALUE rb_str_new2(ptr) const char *ptr; { + if (!ptr) { + rb_raise(rb_eArgError, "NULL pointer given"); + } return rb_str_new(ptr, strlen(ptr)); }