summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-10-26 16:08:03 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-10-26 16:08:03 +0000
commitf850cf28660c7b9a708767d779c16263668afe65 (patch)
treef598d966ddc28f0948cb0b00aea65c58cdae5f2b
parent5cc05692813f0ba819180dc43df58837f9d612d9 (diff)
downloadruby-f850cf28660c7b9a708767d779c16263668afe65.tar.gz
* 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
-rw-r--r--ChangeLog5
-rw-r--r--ext/nkf/nkf.c3
2 files changed, 7 insertions, 1 deletions
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 <naruse@ruby-lang.org>
+
+ * 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 <mame@tsg.ne.jp>
* 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);