From 9c8d9f31f70a73d041c8c1797a0d795d97ca4412 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 7 Mar 2016 01:58:09 +0000 Subject: win32ole_event.c: use rb_write_error_str * ext/win32ole/win32ole_event.c (rescue_callback): use rb_write_error_str instead of rb_write_error, to respect the encoding and prevent the message from GC. * internal.h (rb_write_error_str): export. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54013 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/win32ole/win32ole_event.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'ext') diff --git a/ext/win32ole/win32ole_event.c b/ext/win32ole/win32ole_event.c index 8e30732592..577333bfbb 100644 --- a/ext/win32ole/win32ole_event.c +++ b/ext/win32ole/win32ole_event.c @@ -6,6 +6,8 @@ * WIN32OLE_EVENT objects controls OLE event. */ +RUBY_EXTERN void rb_write_error_str(VALUE mesg); + typedef struct { struct IEventSinkVtbl * lpVtbl; } IEventSink, *PEVENTSINK; @@ -468,7 +470,7 @@ rescue_callback(VALUE arg) VALUE msg = rb_funcall(e, rb_intern("message"), 0); bt = rb_ary_entry(bt, 0); error = rb_sprintf("%"PRIsVALUE": %"PRIsVALUE" (%s)\n", bt, msg, rb_obj_classname(e)); - rb_write_error(StringValuePtr(error)); + rb_write_error_str(error); rb_backtrace(); ruby_finalize(); exit(-1); -- cgit v1.2.3