From 8c5cb5e782ac03f28ecaa3e2bf77b2062e6be279 Mon Sep 17 00:00:00 2001 From: Tomoyuki Sahara Date: Wed, 8 May 2013 09:40:24 +0900 Subject: cannot pack objects other than the first one. closes #1. --- src/pack.c | 3 ++- test/pack.rb | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/pack.c b/src/pack.c index a2dc0bdd6..659a0e424 100644 --- a/src/pack.c +++ b/src/pack.c @@ -664,6 +664,7 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary) prepare_tmpl(mrb, &tmpl); result = mrb_str_new(mrb, NULL, 128); /* allocate initial buffer */ + aidx = 0; ridx = 0; while (has_tmpl(&tmpl)) { read_tmpl(mrb, &tmpl, &dir, &type, &size, &count, &flags); @@ -671,7 +672,7 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary) if (dir == PACK_DIR_INVALID) continue; - for (aidx = 0; aidx < RARRAY_LEN(ary); aidx++) { + for (; aidx < RARRAY_LEN(ary); aidx++) { if (count == 0 && !(flags & PACK_FLAG_WIDTH)) break; diff --git a/test/pack.rb b/test/pack.rb index 7339bbdee..7789fb446 100644 --- a/test/pack.rb +++ b/test/pack.rb @@ -83,3 +83,8 @@ assert('["abc"].pack("A")') do "abc\0".unpack("A4") == ["abc"] and "abc ".unpack("A4") == ["abc"] end + +# regression tests +assert('issue #1') do + [1, 2].pack("nn") == "\000\001\000\002" +end -- cgit v1.2.3