summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authoraamine <aamine@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-10-24 17:54:53 +0000
committeraamine <aamine@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-10-24 17:54:53 +0000
commit42e292ae3301039216ec5173adb4d6571101b8b6 (patch)
tree9cbcf428287ee4de31b1c55f110f19303cd8b746 /string.c
parent57d2e81af5f615e8c1a977096aa239e2541f126c (diff)
* string.c (rb_str_split_m): RSTRING(str)->ptr might become NULL.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2993 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c6
1 files changed, 5 insertions, 1 deletions
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;
}