summaryrefslogtreecommitdiff
path: root/error.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-03-07 07:30:31 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-03-07 07:30:31 +0000
commit075d98c7dc0cee294f03ed0ed26e1e8d8876b2b9 (patch)
tree9e8837ee94ededc62b66b5c4f7a97e9477ba4d0a /error.c
parent8e07edf364398a9843dc939ec7e5ec7acdf62b95 (diff)
* error.c (rb_load_fail): should honor encoding.
* load.c (load_failed): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34944 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'error.c')
-rw-r--r--error.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/error.c b/error.c
index b8f9f06654..0562de5d84 100644
--- a/error.c
+++ b/error.c
@@ -1740,19 +1740,26 @@ rb_raise(VALUE exc, const char *fmt, ...)
rb_exc_raise(rb_exc_new3(exc, mesg));
}
+NORETURN(static void raise_loaderror(VALUE path, VALUE mesg));
+
+static void
+raise_loaderror(VALUE path, VALUE mesg)
+{
+ VALUE err = rb_exc_new3(rb_eLoadError, mesg);
+ rb_ivar_set(err, rb_intern("@path"), path);
+ rb_exc_raise(err);
+}
+
void
rb_loaderror(const char *fmt, ...)
{
va_list args;
VALUE mesg;
- VALUE err;
va_start(args, fmt);
mesg = rb_enc_vsprintf(rb_locale_encoding(), fmt, args);
va_end(args);
- err = rb_exc_new3(rb_eLoadError, mesg);
- rb_ivar_set(err, rb_intern("@path"), Qnil);
- rb_exc_raise(err);
+ raise_loaderror(Qnil, mesg);
}
void
@@ -1760,14 +1767,11 @@ rb_loaderror_with_path(VALUE path, const char *fmt, ...)
{
va_list args;
VALUE mesg;
- VALUE err;
va_start(args, fmt);
mesg = rb_enc_vsprintf(rb_locale_encoding(), fmt, args);
va_end(args);
- err = rb_exc_new3(rb_eLoadError, mesg);
- rb_ivar_set(err, rb_intern("@path"), path);
- rb_exc_raise(err);
+ raise_loaderror(path, mesg);
}
void
@@ -1908,9 +1912,12 @@ rb_sys_warning(const char *fmt, ...)
}
void
-rb_load_fail(VALUE path)
+rb_load_fail(VALUE path, const char *err)
{
- rb_loaderror_with_path(path, "%s -- %s", strerror(errno), RSTRING_PTR(path));
+ VALUE mesg = rb_str_buf_new_cstr(err);
+ rb_str_cat2(mesg, " -- ");
+ rb_str_append(mesg, path); /* should be ASCII compatible */
+ raise_loaderror(path, mesg);
}
void