diff options
| author | Tomoyuki Sahara <[email protected]> | 2013-05-08 09:40:24 +0900 |
|---|---|---|
| committer | Tomoyuki Sahara <[email protected]> | 2013-05-08 09:40:24 +0900 |
| commit | 8c5cb5e782ac03f28ecaa3e2bf77b2062e6be279 (patch) | |
| tree | 174682c4f75a29e7e560cb5e047d85b435ff761b | |
| parent | 7618ca6bb300c7bc1599a6796105cd12c9d03cd7 (diff) | |
| download | mruby-8c5cb5e782ac03f28ecaa3e2bf77b2062e6be279.tar.gz mruby-8c5cb5e782ac03f28ecaa3e2bf77b2062e6be279.zip | |
cannot pack objects other than the first one. closes #1.
| -rw-r--r-- | src/pack.c | 3 | ||||
| -rw-r--r-- | test/pack.rb | 5 |
2 files changed, 7 insertions, 1 deletions
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 |
