diff options
-rw-r--r-- | error.c | 8 | ||||
-rw-r--r-- | internal/error.h | 3 |
2 files changed, 10 insertions, 1 deletions
@@ -2830,6 +2830,12 @@ rb_sys_fail_path_in(const char *func_name, VALUE path) void rb_syserr_fail_path_in(const char *func_name, int n, VALUE path) { + rb_exc_raise(rb_syserr_new_path_in(func_name, n, path)); +} + +VALUE +rb_syserr_new_path_in(const char *func_name, int n, VALUE path) +{ VALUE args[2]; if (!path) path = Qnil; @@ -2841,7 +2847,7 @@ rb_syserr_fail_path_in(const char *func_name, int n, VALUE path) } args[0] = path; args[1] = rb_str_new_cstr(func_name); - rb_exc_raise(rb_class_new_instance(2, args, get_syserr(n))); + return rb_class_new_instance(2, args, get_syserr(n)); } #endif diff --git a/internal/error.h b/internal/error.h index 5a9b6cd834..b6fd25b915 100644 --- a/internal/error.h +++ b/internal/error.h @@ -32,9 +32,11 @@ #ifdef RUBY_FUNCTION_NAME_STRING # define rb_sys_fail_path(path) rb_sys_fail_path_in(RUBY_FUNCTION_NAME_STRING, path) # define rb_syserr_fail_path(err, path) rb_syserr_fail_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path)) +# define rb_syserr_new_path(err, path) rb_syserr_new_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path)) #else # define rb_sys_fail_path(path) rb_sys_fail_str(path) # define rb_syserr_fail_path(err, path) rb_syserr_fail_str((err), (path)) +# define rb_syserr_new_path(err, path) rb_syserr_new_str((err), (path)) #endif /* error.c */ @@ -79,6 +81,7 @@ int rb_bug_reporter_add(void (*func)(FILE *, void *), void *data); #ifdef RUBY_FUNCTION_NAME_STRING NORETURN(void rb_sys_fail_path_in(const char *func_name, VALUE path)); NORETURN(void rb_syserr_fail_path_in(const char *func_name, int err, VALUE path)); +VALUE rb_syserr_new_path_in(const char *func_name, int n, VALUE path); #endif RUBY_SYMBOL_EXPORT_END |