From 3e2fdaf1dd76dc39177dce7937897f4dc70e875d Mon Sep 17 00:00:00 2001 From: naruse Date: Thu, 18 Apr 2013 05:03:00 +0000 Subject: [PATCH] * pack.c (pack_unpack): output characters even if the input doesn't have paddings. [Bug #8286] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ pack.c | 4 ++-- test/ruby/test_pack.rb | 4 ++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index cc655bb16f..c5f660ac18 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Apr 18 13:35:54 2013 NARUSE, Yui + + * 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 * common.mk (clean-ext): remove timestamps. diff --git a/pack.c b/pack.c index fb6472c809..0a37d8d18e 100644 --- a/pack.c +++ b/pack.c @@ -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