diff options
| -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 |
