aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--string.c6
2 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 678d4a2bd1..e140a2c5c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Fri Oct 25 02:55:01 2002 Minero Aoki <aamine@loveruby.net>
+
+ * string.c (rb_str_split_m): RSTRING(str)->ptr might become NULL.
+
Thu Oct 24 21:57:02 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
* configure.in (LIBPATHFLAG): avoid $ substitution.
diff --git a/string.c b/string.c
index 57e0cad81a..3f1445fb5e 100644
--- a/string.c
+++ b/string.c
@@ -2533,7 +2533,11 @@ rb_str_split_m(argc, argv, str)
while ((end = rb_reg_search(spat, str, start, 0)) >= 0) {
regs = RMATCH(rb_backref_get())->regs;
if (start == end && BEG(0) == END(0)) {
- if (last_null == 1) {
+ if (!RSTRING(str)->ptr) {
+ rb_ary_push(result, rb_str_new("", 0));
+ break;
+ }
+ else if (last_null == 1) {
rb_ary_push(result, rb_str_substr(str, beg, mbclen2(RSTRING(str)->ptr[beg],spat)));
beg = start;
}