diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | pack.c | 4 | ||||
-rw-r--r-- | test/ruby/test_pack.rb | 4 |
3 files changed, 11 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Thu Apr 18 13:35:54 2013 NARUSE, Yui <naruse@ruby-lang.org> + + * pack.c (pack_unpack): output characters even if the input doesn't + have paddings. [Bug #8286] + Thu Apr 18 08:20:48 2013 NARUSE, Yui <naruse@ruby-lang.org> * common.mk (clean-ext): remove timestamps. @@ -2006,9 +2006,9 @@ pack_unpack(VALUE str, VALUE fmt) *ptr++ = castchar(c << 6 | d); } if (a != -1 && b != -1) { - if (c == -1 && *s == '=') + if (c == -1) *ptr++ = castchar(a << 2 | b >> 4); - else if (c != -1 && *s == '=') { + else { *ptr++ = castchar(a << 2 | b >> 4); *ptr++ = castchar(b << 4 | c >> 2); } diff --git a/test/ruby/test_pack.rb b/test/ruby/test_pack.rb index 39a9c1ab23..9dbb0b0c72 100644 --- a/test/ruby/test_pack.rb +++ b/test/ruby/test_pack.rb @@ -545,6 +545,10 @@ EXPECTED assert_equal(["\377"], "/w==\n".unpack("m")) assert_equal(["\377\377"], "//8=\n".unpack("m")) assert_equal(["\377\377\377"], "////\n".unpack("m")) + assert_equal([""], "A\n".unpack("m")) + assert_equal(["\0"], "AA\n".unpack("m")) + assert_equal(["\0"], "AA=\n".unpack("m")) + assert_equal(["\0\0"], "AAA\n".unpack("m")) end def test_pack_unpack_m0 |