Skip to content

Commit

Permalink
Add rb_exc_exception function
Browse files Browse the repository at this point in the history
`rb_exc_raise` and `rb_fatal` func have similar code(in `eval.c`).
I think that better cut out and replace these code like `rb_exc_exception`
function.
  • Loading branch information
S-H-GAMELINKS committed Mar 27, 2021
1 parent aceb8c0 commit 89fa5b1
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions eval.c
Original file line number Diff line number Diff line change
Expand Up @@ -701,6 +701,17 @@ rb_longjmp(rb_execution_context_t *ec, int tag, volatile VALUE mesg, VALUE cause

static VALUE make_exception(int argc, const VALUE *argv, int isstr);

NORETURN(static void rb_exc_exception(VALUE mesg, int tag, VALUE cause));

static void
rb_exc_exception(VALUE mesg, int tag, VALUE cause)
{
if (!NIL_P(mesg)) {
mesg = make_exception(1, &mesg, FALSE);
}
rb_longjmp(GET_EC(), tag, mesg, cause);
}

/*!
* Raises an exception in the current thread.
* \param[in] mesg an Exception class or an \c Exception object.
Expand All @@ -711,10 +722,7 @@ static VALUE make_exception(int argc, const VALUE *argv, int isstr);
void
rb_exc_raise(VALUE mesg)
{
if (!NIL_P(mesg)) {
mesg = make_exception(1, &mesg, FALSE);
}
rb_longjmp(GET_EC(), TAG_RAISE, mesg, Qundef);
rb_exc_exception(mesg, TAG_RAISE, Qundef);
}

/*!
Expand All @@ -727,10 +735,7 @@ rb_exc_raise(VALUE mesg)
void
rb_exc_fatal(VALUE mesg)
{
if (!NIL_P(mesg)) {
mesg = make_exception(1, &mesg, FALSE);
}
rb_longjmp(GET_EC(), TAG_FATAL, mesg, Qnil);
rb_exc_exception(mesg, TAG_FATAL, Qnil);
}

/*!
Expand Down

0 comments on commit 89fa5b1

Please sign in to comment.