aboutsummaryrefslogtreecommitdiffstats
path: root/ext/win32ole
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-07 01:58:09 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-07 01:58:09 +0000
commit264db90626ab254b6639f4363e7d8ad498ceba1f (patch)
tree413187a17dd065dfb79505c2fac2dc67e1c3b560 /ext/win32ole
parent6312738f98986599b3295b2142378e7ac0897e0e (diff)
downloadruby-264db90626ab254b6639f4363e7d8ad498ceba1f.tar.gz
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
Diffstat (limited to 'ext/win32ole')
-rw-r--r--ext/win32ole/win32ole_event.c4
1 files changed, 3 insertions, 1 deletions
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 @@
* <code>WIN32OLE_EVENT</code> 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);