From 544477a7b0e4f5ecd2dda6445ad996c33b1457a8 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 27 Mar 2005 23:40:32 +0000 Subject: * ext/iconv/iconv.c (iconv_create): Iconv::Failure requires 3 arguments. (pointed out by NaHi) git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@8201 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 15 ++++++++++----- ext/iconv/iconv.c | 17 ++++++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index f94604649..9f4b5868c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Mar 28 08:39:49 2005 Nobuyoshi Nakada + + * ext/iconv/iconv.c (iconv_create): Iconv::Failure requires 3 + arguments. (pointed out by NaHi) + Sun Mar 27 00:56:58 2005 Minero Aoki * lib/fileutils.rb (remove_file): ignore Errno::E* if force option @@ -6,7 +11,7 @@ Sun Mar 27 00:56:58 2005 Minero Aoki Sat Mar 26 22:51:33 2005 Hidetoshi NAGAI * ext/tk/lib/tk.rb (_callback_entry_class?): add for checking whether - a class is available for a callback entry. + a class is available for a callback entry. * ext/tk/lib/tk.rb (after_cancel): add Tk.after_cancel(afterID) method. @@ -14,7 +19,7 @@ Sat Mar 26 22:51:33 2005 Hidetoshi NAGAI of TkComm to public module method. * ext/tk/lib/tk.rb (cget): add check that slot argument is not - empty string. + empty string. * ext/tk/lib/tk.rb (configinfo): ditto. @@ -24,16 +29,16 @@ Sat Mar 26 22:51:33 2005 Hidetoshi NAGAI * ext/tk/lib/tk/itemconfig.rb (itemconfiginfo): ditto. * ext/tk/lib/tk/entry.rb: add TkEntry#icursor and icursor= (alias of - cursor and cursor= method). + cursor and cursor= method). * ext/tk/lib/tk/font.rb: improve font treatment when the font name is empty string. * ext/tk/lib/tk/variable.rb: add :variable, :window and :procedure - type. + type. * ext/tk/lib/tk/variable.rb: improve treatment of array-type - tkvariable. + tkvariable. * ext/tk/lib/tkextlib/blt.rb: add commands for zooming. diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index ed4db1499..00db78194 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -169,14 +169,17 @@ iconv_create } if (cd == (iconv_t)-1) { int inval = errno == EINVAL; - volatile VALUE msg = rb_str_new2("iconv(\"" + (inval ? 5 : 0)); - char *s; - - rb_str_buf_cat2(rb_str_buf_append(msg, to), "\", \""); - rb_str_buf_cat2(rb_str_buf_append(msg, from), "\")"); - s = StringValuePtr(msg); + char *s = inval ? "invalid encoding " : "iconv"; + volatile VALUE msg = rb_str_new(0, strlen(s) + RSTRING(to)->len + + RSTRING(from)->len + 8); + + sprintf(RSTRING(msg)->ptr, "%s(\"%s\", \"%s\")", + s, RSTRING(to)->ptr, RSTRING(from)->ptr); + s = RSTRING(msg)->ptr; + RSTRING(msg)->len = strlen(s); if (!inval) rb_sys_fail(s); - rb_raise(rb_eIconvInvalidEncoding, "invalid encoding %s", s); + iconv_fail(rb_eIconvInvalidEncoding, + Qnil, rb_ary_new3(2, to, from), NULL, s); } } -- cgit