From f850cf28660c7b9a708767d779c16263668afe65 Mon Sep 17 00:00:00 2001 From: naruse Date: Sun, 26 Oct 2008 16:08:03 +0000 Subject: [PATCH] * ext/nkf/nkf.c (rb_nkf_convert): avoid GC. reported in [ruby-dev:36909] and patched [ruby-dev:36941] by mame. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ ext/nkf/nkf.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index dcf607cccb..85c254a552 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Oct 27 01:05:48 2008 NARUSE, Yui + + * ext/nkf/nkf.c (rb_nkf_convert): avoid GC. + reported in [ruby-dev:36909] and patched [ruby-dev:36941] by mame. + Sun Oct 26 21:28:42 2008 Yusuke Endoh * test/json/test_json.rb: remove dependency on permutation gem. diff --git a/ext/nkf/nkf.c b/ext/nkf/nkf.c index a0c14b55a4..d9db1de086 100644 --- a/ext/nkf/nkf.c +++ b/ext/nkf/nkf.c @@ -135,6 +135,7 @@ int nkf_split_options(const char *arg) static VALUE rb_nkf_convert(VALUE obj, VALUE opt, VALUE src) { + volatile tmp; reinit(); StringValue(opt); nkf_split_options(RSTRING_PTR(opt)); @@ -155,7 +156,7 @@ rb_nkf_convert(VALUE obj, VALUE opt, VALUE src) StringValue(src); input = (unsigned char *)RSTRING_PTR(src); i_len = RSTRING_LEN(src); - result = rb_str_new(0, i_len*3 + 10); + tmp = result = rb_str_new(0, i_len*3 + 10); output_ctr = 0; output = (unsigned char *)RSTRING_PTR(result);