summaryrefslogtreecommitdiff
path: root/ext/psych/psych_emitter.c
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-09-02 09:50:00 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-09-02 09:50:00 +0000
commit4a14d94418dc50b817e4e5811c822a3a07584acf (patch)
tree36fbd75523eb8d30160d11a69a122083fe19e0f2 /ext/psych/psych_emitter.c
parent0f35174060ff1d7910d257679090ecde20eb298e (diff)
* ext/psych/*: merge psych master(8737e5b). It contains following fixes.
https://github.com/tenderlove/psych/pull/242 https://github.com/tenderlove/psych/pull/246 [ruby-list:50219] * test/psych/*: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51741 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/psych/psych_emitter.c')
-rw-r--r--ext/psych/psych_emitter.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ext/psych/psych_emitter.c b/ext/psych/psych_emitter.c
index feffc54ce7..f77d8d7d86 100644
--- a/ext/psych/psych_emitter.c
+++ b/ext/psych/psych_emitter.c
@@ -15,7 +15,11 @@ static void emit(yaml_emitter_t * emitter, yaml_event_t * event)
static int writer(void *ctx, unsigned char *buffer, size_t size)
{
VALUE io = (VALUE)ctx;
+#ifdef HAVE_RUBY_ENCODING_H
+ VALUE str = rb_enc_str_new((const char *)buffer, (long)size, rb_utf8_encoding());
+#else
VALUE str = rb_str_new((const char *)buffer, (long)size);
+#endif
VALUE wrote = rb_funcall(io, id_write, 1, str);
return (int)NUM2INT(wrote);
}