[#18440] racc segv revisited — "Akinori MUSHA" <knu@...>

 次のバグの件なんですが、現時点では原因究明を含めて未解決という

24 messages 2002/10/02
[#18617] Re: racc segv revisited — "Akinori MUSHA" <knu@...> 2002/11/02

At Wed, 2 Oct 2002 23:19:59 +0900,

[ruby-dev:18581] [PATCH] ' '.dup.rstrip.gsub(/a/, '').split(//) causes SEGV

From: Minero Aoki <aamine@...>
Date: 2002-10-24 18:21:32 UTC
List: ruby-dev #18581
あおきです。

後世の参照のため (?) こちらにもいちおう投げておきます。

CVS HEAD で以下のスクリプトが SEGV します。

  ' '.dup.rstrip.gsub(/a/, '').split(//)

パッチは添付の通り。チェックイン済です。
-------------------------------------------------------------------
青木峰郎

diff -u -p -r1.122 -r1.123
--- string.c	23 Oct 2002 10:17:29 -0000	1.122
+++ string.c	24 Oct 2002 17:54:53 -0000	1.123
@@ -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;
 		}

In This Thread

Prev Next