Skip to content

Commit cc031a3

Browse files
committed
fix: in value_to_string_exception_safe(), call rb_set_errinfo(Qnil) in case of a caught exception, so the exception can be ignored
1 parent a49814a commit cc031a3

File tree

1 file changed

+6
-5
lines changed
  • gems/codetracer-ruby-recorder/ext/native_tracer/src

1 file changed

+6
-5
lines changed

gems/codetracer-ruby-recorder/ext/native_tracer/src/lib.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ use rb_sys::{
1717
rb_define_method, rb_eIOError, rb_event_flag_t, rb_event_hook_flag_t, rb_event_hook_func_t,
1818
rb_funcall, rb_id2name, rb_id2sym, rb_intern, rb_method_boundp, rb_num2dbl, rb_num2long,
1919
rb_obj_classname, rb_obj_is_kind_of, rb_protect, rb_raise, rb_remove_event_hook_with_data,
20-
rb_sym2id, rb_trace_arg_t, rb_tracearg_binding, rb_tracearg_callee_id, rb_tracearg_event_flag,
21-
rb_tracearg_lineno, rb_tracearg_path, rb_tracearg_raised_exception, rb_tracearg_return_value,
22-
rb_tracearg_self, Qfalse, Qnil, Qtrue, ID, NIL_P, RARRAY_CONST_PTR, RARRAY_LEN,
23-
RB_FLOAT_TYPE_P, RB_INTEGER_TYPE_P, RB_SYMBOL_P, RB_TYPE_P, RSTRING_LEN, RSTRING_PTR,
24-
RUBY_EVENT_CALL, RUBY_EVENT_LINE, RUBY_EVENT_RAISE, RUBY_EVENT_RETURN, VALUE,
20+
rb_set_errinfo, rb_sym2id, rb_trace_arg_t, rb_tracearg_binding, rb_tracearg_callee_id,
21+
rb_tracearg_event_flag, rb_tracearg_lineno, rb_tracearg_path, rb_tracearg_raised_exception,
22+
rb_tracearg_return_value, rb_tracearg_self, Qfalse, Qnil, Qtrue, ID, NIL_P, RARRAY_CONST_PTR,
23+
RARRAY_LEN, RB_FLOAT_TYPE_P, RB_INTEGER_TYPE_P, RB_SYMBOL_P, RB_TYPE_P, RSTRING_LEN,
24+
RSTRING_PTR, RUBY_EVENT_CALL, RUBY_EVENT_LINE, RUBY_EVENT_RAISE, RUBY_EVENT_RETURN, VALUE,
2525
};
2626
use runtime_tracing::{
2727
create_trace_writer, CallRecord, EventLogKind, FieldTypeRecord, FullValueRecord, Line,
@@ -316,6 +316,7 @@ unsafe fn value_to_string_exception_safe(recorder: &Recorder, val: VALUE) -> Str
316316
let data = (val, recorder.id.to_s);
317317
let str_val = rb_protect(Some(call_to_s), &data as *const _ as VALUE, &mut state);
318318
if state != 0 {
319+
rb_set_errinfo(Qnil.into());
319320
String::default()
320321
} else {
321322
rstring_lossy(str_val)

0 commit comments

Comments
 (0)