diff options
| author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-15 08:16:18 +0000 |
|---|---|---|
| committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-15 08:16:18 +0000 |
| commit | 9d6194ab18dc064e4979c4fb84411cfb4a7efa6b (patch) | |
| tree | c440bd6c8dba2178f38335627d46071a9ef16e97 | |
| parent | b2d434bdb130908656c55f48e1a1c4d94ea89852 (diff) | |
* ext/iconv/iconv.c (rb_iconv_sys_fail): raise BrokenLibrary if
errno is not set. [ruby-dev:41317]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@27800 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | ext/iconv/iconv.c | 12 |
2 files changed, 17 insertions, 0 deletions
@@ -1,3 +1,8 @@ +Sat May 15 17:16:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * ext/iconv/iconv.c (rb_iconv_sys_fail): raise BrokenLibrary if + errno is not set. [ruby-dev:41317] + Sat May 15 12:36:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> * Makefile.in, common.mk, win32/Makefile.sub (REVISION_H): move diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index 09e3b393ef..e3a64c3bc3 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -146,6 +146,18 @@ map_charset return StringValuePtr(*code); } +NORETURN(static void rb_iconv_sys_fail(const char *s)); +static void +rb_iconv_sys_fail(const char *s) +{ + if (errno == 0) { + rb_raise(rb_eIconvBrokenLibrary, "%s", s); + } + rb_sys_fail(s); +} + +#define rb_sys_fail(s) rb_iconv_sys_fail(s) + static iconv_t iconv_create #ifdef HAVE_PROTOTYPES |
