Skip to content

Commit d7f2704

Browse files
committed
merge revision(s) 20580:
* pack.c (pack_pack): fixed length for odd length string. [ruby-dev:37283] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_6@22444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent 52b49b3 commit d7f2704

File tree

4 files changed

+51
-6
lines changed

4 files changed

+51
-6
lines changed

ChangeLog

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
Thu Feb 19 17:24:30 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
2+
3+
* pack.c (pack_pack): fixed length for odd length string.
4+
[ruby-dev:37283]
5+
16
Wed Feb 18 22:27:11 2009 NAKAMURA Usaku <usa@ruby-lang.org>
27

38
* win32/win32.c (rb_w32_isatty): check whether fd is valid.

pack.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ pack_pack(ary, fmt)
610610
long i, j = 0;
611611

612612
if (len > plen) {
613-
j = (len - plen + 1)/2;
613+
j = (len + 1) / 2 - (plen + 1) / 2;
614614
len = plen;
615615
}
616616
for (i=0; i++ < len; ptr++) {
@@ -641,7 +641,7 @@ pack_pack(ary, fmt)
641641
long i, j = 0;
642642

643643
if (len > plen) {
644-
j = (len - plen + 1)/2;
644+
j = (len + 1) / 2 - (plen + 1) / 2;
645645
len = plen;
646646
}
647647
for (i=0; i++ < len; ptr++) {

test/ruby/test_pack.rb

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,44 @@ def test_pack_U
5757
assert_raises(RangeError) { [0x80000000].pack("U") }
5858
assert_raises(RangeError) { [0x100000000].pack("U") }
5959
end
60+
61+
def test_pack_unpack_hH
62+
assert_equal("\x01\xfe", ["10ef"].pack("h*"))
63+
assert_equal("", ["10ef"].pack("h0"))
64+
assert_equal("\x01\x0e", ["10ef"].pack("h3"))
65+
assert_equal("\x01\xfe\x0", ["10ef"].pack("h5"))
66+
assert_equal("\xff\x0f", ["fff"].pack("h3"))
67+
assert_equal("\xff\x0f", ["fff"].pack("h4"))
68+
assert_equal("\xff\x0f\0", ["fff"].pack("h5"))
69+
assert_equal("\xff\x0f\0", ["fff"].pack("h6"))
70+
assert_equal("\xff\x0f\0\0", ["fff"].pack("h7"))
71+
assert_equal("\xff\x0f\0\0", ["fff"].pack("h8"))
72+
73+
assert_equal("\x10\xef", ["10ef"].pack("H*"))
74+
assert_equal("", ["10ef"].pack("H0"))
75+
assert_equal("\x10\xe0", ["10ef"].pack("H3"))
76+
assert_equal("\x10\xef\x0", ["10ef"].pack("H5"))
77+
assert_equal("\xff\xf0", ["fff"].pack("H3"))
78+
assert_equal("\xff\xf0", ["fff"].pack("H4"))
79+
assert_equal("\xff\xf0\0", ["fff"].pack("H5"))
80+
assert_equal("\xff\xf0\0", ["fff"].pack("H6"))
81+
assert_equal("\xff\xf0\0\0", ["fff"].pack("H7"))
82+
assert_equal("\xff\xf0\0\0", ["fff"].pack("H8"))
83+
84+
assert_equal(["10ef"], "\x01\xfe".unpack("h*"))
85+
assert_equal([""], "\x01\xfe".unpack("h0"))
86+
assert_equal(["1"], "\x01\xfe".unpack("h1"))
87+
assert_equal(["10"], "\x01\xfe".unpack("h2"))
88+
assert_equal(["10e"], "\x01\xfe".unpack("h3"))
89+
assert_equal(["10ef"], "\x01\xfe".unpack("h4"))
90+
assert_equal(["10ef"], "\x01\xfe".unpack("h5"))
91+
92+
assert_equal(["10ef"], "\x10\xef".unpack("H*"))
93+
assert_equal([""], "\x10\xef".unpack("H0"))
94+
assert_equal(["1"], "\x10\xef".unpack("H1"))
95+
assert_equal(["10"], "\x10\xef".unpack("H2"))
96+
assert_equal(["10e"], "\x10\xef".unpack("H3"))
97+
assert_equal(["10ef"], "\x10\xef".unpack("H4"))
98+
assert_equal(["10ef"], "\x10\xef".unpack("H5"))
99+
end
60100
end

version.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
#define RUBY_VERSION "1.8.6"
2-
#define RUBY_RELEASE_DATE "2009-02-18"
2+
#define RUBY_RELEASE_DATE "2009-02-19"
33
#define RUBY_VERSION_CODE 186
4-
#define RUBY_RELEASE_CODE 20090218
5-
#define RUBY_PATCHLEVEL 341
4+
#define RUBY_RELEASE_CODE 20090219
5+
#define RUBY_PATCHLEVEL 342
66

77
#define RUBY_VERSION_MAJOR 1
88
#define RUBY_VERSION_MINOR 8
99
#define RUBY_VERSION_TEENY 6
1010
#define RUBY_RELEASE_YEAR 2009
1111
#define RUBY_RELEASE_MONTH 2
12-
#define RUBY_RELEASE_DAY 18
12+
#define RUBY_RELEASE_DAY 19
1313

1414
#ifdef RUBY_EXTERN
1515
RUBY_EXTERN const char ruby_version[];

0 commit comments

Comments
 (0)