diff options
author | Nobuyoshi Nakada <[email protected]> | 2020-01-11 10:19:29 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <[email protected]> | 2020-01-11 10:42:22 +0900 |
commit | eb737916b1e435ff8212913c03e5798089b0d3fe () | |
tree | 924832351005da6aa5aba1d0bbb21908f24b306c | |
parent | 8bb24712de04cfa8bb1dbfc0c3cee3de6eb4b40d (diff) |
Warn when :newline precedes other newline options
-rw-r--r-- | test/ruby/test_econv.rb | 4 | ||||
-rw-r--r-- | transcode.c | 13 |
2 files changed, 13 insertions, 4 deletions
@@ -922,7 +922,9 @@ class TestEncodingConverter < Test::Unit::TestCase end newlines.each do |nl| opts = {newline: :universal, nl => true} - ec2 = Encoding::Converter.new("", "", **opts) assert_equal(ec1, ec2) end end @@ -2418,6 +2418,7 @@ static int econv_opts(VALUE opt, int ecflags) { VALUE v; v = rb_hash_aref(opt, sym_invalid); if (NIL_P(v)) { @@ -2463,6 +2464,7 @@ econv_opts(VALUE opt, int ecflags) #ifdef ENABLE_ECONV_NEWLINE_OPTION v = rb_hash_aref(opt, sym_newline); if (!NIL_P(v)) { ecflags &= ~ECONV_NEWLINE_DECORATOR_MASK; if (v == sym_universal) { ecflags |= ECONV_UNIVERSAL_NEWLINE_DECORATOR; @@ -2484,10 +2486,9 @@ econv_opts(VALUE opt, int ecflags) rb_raise(rb_eArgError, "unexpected value for newline option"); } } - else #endif { - int setflags = 0, newlineflag = 0; v = rb_hash_aref(opt, sym_universal_newline); if (RTEST(v)) @@ -2504,9 +2505,15 @@ econv_opts(VALUE opt, int ecflags) setflags |= ECONV_CR_NEWLINE_DECORATOR; newlineflag |= !NIL_P(v); - if (newlineflag) { ecflags &= ~ECONV_NEWLINE_DECORATOR_MASK; ecflags |= setflags; } } |