summaryrefslogtreecommitdiff
path: root/io.c
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-03-13 04:03:06 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-03-13 04:03:06 +0000
commitdb83618d2c49cbab8b78e31ecf5a8979895bc5d6 (patch)
treeb7c0ac4231aaaec0b29b508556caeab5cca38c1b /io.c
parent272d72efc07c78d62d56cc10dbb30094083fb01f (diff)
* io.c (io_encoding_set): always warn if external encoding and internal
encoding are identical. [ruby-core:40727] [Bug #5568] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34997 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r--io.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/io.c b/io.c
index 169a5897a5..3fb9f1af02 100644
--- a/io.c
+++ b/io.c
@@ -8743,11 +8743,22 @@ io_encoding_set(rb_io_t *fptr, VALUE v1, VALUE v2, VALUE opt)
enc = find_encoding(v2);
if (enc == enc2) {
/* Special case - "-" => no transcoding */
+ VALUE tmp1 = rb_check_string_type(v1);
+ rb_warn("Ignoring internal encoding %s: it is identical to external encoding %s",
+ StringValueCStr(tmp), NIL_P(tmp1) ? rb_enc_name(enc) : StringValueCStr(tmp1));
enc2 = NULL;
}
}
- else
+ else {
enc = find_encoding(v2);
+ if (enc == enc2) {
+ /* Special case - "-" => no transcoding */
+ VALUE tmp1 = rb_check_string_type(v1);
+ rb_warn("Ignoring internal encoding %s: it is identical to external encoding %s",
+ rb_enc_name(enc), NIL_P(tmp1) ? rb_enc_name(enc) : StringValueCStr(tmp1));
+ enc2 = NULL;
+ }
+ }
SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags);
ecflags = rb_econv_prepare_options(opt, &ecopts, ecflags);
}