From bc17dba00f667520e8af3b1bd72ff59882f81751 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 5 Sep 2011 09:10:58 +0000 Subject: * transcode.c (rb_econv_binmode): newline decorators are exclusive. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33193 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- transcode.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'transcode.c') diff --git a/transcode.c b/transcode.c index 5f7f856a33..2c188b67f7 100644 --- a/transcode.c +++ b/transcode.c @@ -1935,20 +1935,22 @@ rb_econv_binmode(rb_econv_t *ec) int n, i, j; transcoder_entry_t *entry; int num_trans; + const char *dname = 0; n = 0; - if (ec->flags & ECONV_UNIVERSAL_NEWLINE_DECORATOR) { - entry = get_transcoder_entry("", "universal_newline"); - if (entry->transcoder) - trs[n++] = entry->transcoder; - } - if (ec->flags & ECONV_CRLF_NEWLINE_DECORATOR) { - entry = get_transcoder_entry("", "crlf_newline"); - if (entry->transcoder) - trs[n++] = entry->transcoder; + switch (ec->flags & ECONV_NEWLINE_DECORATOR_MASK) { + case ECONV_UNIVERSAL_NEWLINE_DECORATOR: + dname = "universal_newline"; + break; + case ECONV_CRLF_NEWLINE_DECORATOR: + dname = "crlf_newline"; + break; + case ECONV_CR_NEWLINE_DECORATOR: + dname = "cr_newline"; + break; } - if (ec->flags & ECONV_CR_NEWLINE_DECORATOR) { - entry = get_transcoder_entry("", "cr_newline"); + if (dname) { + entry = get_transcoder_entry("", dname); if (entry->transcoder) trs[n++] = entry->transcoder; } -- cgit v1.2.3