Merge pull request #6786 from dearblue/sysfail

This commit is contained in:
Yukihiro "Matz" Matsumoto
2026-04-23 19:15:38 +09:00
committed by GitHub
+5 -3
View File
@@ -592,18 +592,20 @@ mrb_make_exception(mrb_state *mrb, mrb_value exc, mrb_value mesg)
MRB_API mrb_noreturn void
mrb_sys_fail(mrb_state *mrb, const char *mesg)
{
mrb_int no = (mrb_int)errno;
mrb_value mesg_str = mesg ? mrb_str_new_cstr(mrb, mesg) : mrb_nil_value();
if (mrb_class_defined_id(mrb, MRB_SYM(SystemCallError))) {
struct RClass *sce = mrb_class_get_id(mrb, MRB_SYM(SystemCallError));
mrb_int no = (mrb_int)errno;
if (mesg != NULL) {
mrb_funcall_id(mrb, mrb_obj_value(sce), MRB_SYM(_sys_fail), 2, mrb_fixnum_value(no), mrb_str_new_cstr(mrb, mesg));
mrb_funcall_id(mrb, mrb_obj_value(sce), MRB_SYM(_sys_fail), 2, mrb_fixnum_value(no), mesg_str);
}
else {
mrb_funcall_id(mrb, mrb_obj_value(sce), MRB_SYM(_sys_fail), 1, mrb_fixnum_value(no));
}
}
mrb_raise(mrb, E_RUNTIME_ERROR, mesg);
mrb_exc_raise(mrb, mrb_exc_new_str(mrb, E_RUNTIME_ERROR, mesg ? mesg_str : mrb_str_new_lit(mrb, "")));
}
/*