summaryrefslogtreecommitdiff
path: root/transcode.c
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-16 16:18:32 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-16 16:18:32 +0000
commitbad9a9ad0d211f9c0a5c0eb12bdb57e49fa900fd (patch)
treec31724cb127137b5cbae5d0cc3e2cf95bd2e2cab /transcode.c
parenta4523cd04255323f5143299d003e5934acc77079 (diff)
* transcode.c (enc_arg): raise exception when unknown encoding is
given. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'transcode.c')
-rw-r--r--transcode.c21
1 files changed, 3 insertions, 18 deletions
diff --git a/transcode.c b/transcode.c
index 5bd8e009ca..f29e564117 100644
--- a/transcode.c
+++ b/transcode.c
@@ -2389,25 +2389,10 @@ rb_econv_open_opts(const char *source_encoding, const char *destination_encoding
static int
enc_arg(volatile VALUE *arg, const char **name_p, rb_encoding **enc_p)
{
- rb_encoding *enc;
- const char *n;
- int encidx;
- VALUE encval;
-
- if ((encidx = rb_to_encoding_index(encval = *arg)) < 0) {
- enc = NULL;
- encidx = 0;
- n = StringValueCStr(*arg);
- }
- else {
- enc = rb_enc_from_index(encidx);
- n = rb_enc_name(enc);
- }
-
- *name_p = n;
+ rb_encoding *enc = rb_to_encoding(*arg);
+ *name_p = rb_enc_name(enc);
*enc_p = enc;
-
- return encidx;
+ return rb_enc_to_index(enc);
}
static int