From a1027812bd2b7b8032922dcfc70155d5a7b97e29 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 12 Oct 2021 22:38:59 +0900 Subject: error.c: small refactoring regarding #2485 --- src/error.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/error.c b/src/error.c index b2ae38295..5fa872c9b 100644 --- a/src/error.c +++ b/src/error.c @@ -25,17 +25,26 @@ exc_mesg_set(mrb_state *mrb, struct RException *exc, mrb_value mesg) exc->mesg = RSTRING(mesg); mrb_field_write_barrier_value(mrb, (struct RBasic*)exc, mesg); } - else if (!mrb_nil_p(mesg)) { + else { exc->flags &= ~MRB_EXC_MESG_STRING_FLAG; - mrb_obj_iv_set(mrb, (struct RObject*)exc, mrb_intern_lit(mrb, "mesg"), mesg); + if (mrb_nil_p(mesg)) { + exc->mesg = 0; + } + else { + mrb_obj_iv_set(mrb, (struct RObject*)exc, MRB_SYM(mesg), mesg); + } } } static mrb_value exc_mesg_get(mrb_state *mrb, struct RException *exc) { - return (exc->flags & MRB_EXC_MESG_STRING_FLAG) != 0 - ? mrb_obj_value(exc->mesg) : mrb_obj_iv_get(mrb, (struct RObject*)exc, mrb_intern_lit(mrb, "mesg")); + if ((exc->flags & MRB_EXC_MESG_STRING_FLAG) != 0) { + return mrb_obj_value(exc->mesg); + } + else { + return mrb_obj_iv_get(mrb, (struct RObject*)exc, MRB_SYM(mesg)); + } } MRB_API mrb_value -- cgit v1.2.3