diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-03-07 07:30:31 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-03-07 07:30:31 +0000 |
commit | 075d98c7dc0cee294f03ed0ed26e1e8d8876b2b9 (patch) | |
tree | 9e8837ee94ededc62b66b5c4f7a97e9477ba4d0a /error.c | |
parent | 8e07edf364398a9843dc939ec7e5ec7acdf62b95 (diff) | |
download | ruby-075d98c7dc0cee294f03ed0ed26e1e8d8876b2b9.tar.gz |
* 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.c | 27 |
1 files changed, 17 insertions, 10 deletions
@@ -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 |