From e8d2806cfc4137b65a2e2da41fe7f515007d3d57 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 1 Nov 2013 12:12:44 +0000 Subject: transcode.c: fix segv in String.encode! * transcode.c (str_transcode0): fix segv in String.encode!. now rb_str_scrub() can return nil. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- transcode.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/transcode.c b/transcode.c index 92fd806597..386942689a 100644 --- a/transcode.c +++ b/transcode.c @@ -2699,7 +2699,9 @@ str_transcode0(int argc, VALUE *argv, VALUE *self, int ecflags, VALUE ecopts) if (!NIL_P(ecopts)) { rep = rb_hash_aref(ecopts, sym_replace); } - *self = rb_str_scrub(str, rep); + dest = rb_str_scrub(str, rep); + if (NIL_P(dest)) dest = str; + *self = dest; return dencidx; } return NIL_P(arg2) ? -1 : dencidx; -- cgit v1.2.3