summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-06-08 08:45:59 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-06-08 08:45:59 +0000
commit1ab8a925beec7cdce7669bcb7ee6fb16342b33fd (patch)
tree6bc0dbd9b6e8460c508d19e42b86ffae8e90178e /ext
parent98e7a2abca70fd044d5db7e1404c218e74abbd33 (diff)
merge revision(s) 27799:27805:
* ext/iconv/iconv.c (rb_iconv_sys_fail): fix number of arguments. a patch by Masaya TARUI <tarui AT prx.jp>. * 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_7@28221 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r--ext/iconv/iconv.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c
index 09e3b393ef..677c10e3ad 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_exc_raise(iconv_fail(rb_eIconvBrokenLibrary, Qnil, Qnil, NULL, s));
+ }
+ rb_sys_fail(s);
+}
+
+#define rb_sys_fail(s) rb_iconv_sys_fail(s)
+
static iconv_t
iconv_create
#ifdef HAVE_PROTOTYPES