summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-05-15 08:16:18 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-05-15 08:16:18 +0000
commit9d6194ab18dc064e4979c4fb84411cfb4a7efa6b (patch)
treec440bd6c8dba2178f38335627d46071a9ef16e97
parentb2d434bdb130908656c55f48e1a1c4d94ea89852 (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--ChangeLog5
-rw-r--r--ext/iconv/iconv.c12
2 files changed, 17 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 73406c0388..8c8abb6942 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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