diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-08-17 12:52:56 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-08-17 12:52:56 +0900 |
| commit | 4385590d31d74efb2de3208ef1fc371b63548f0f (patch) | |
| tree | 575a99e9e9eaac8082878f541066360bd213648a /mrbgems/mruby-pack | |
| parent | bfe2bd49601df20643b6554ebb7ca4177dac5e25 (diff) | |
| download | mruby-4385590d31d74efb2de3208ef1fc371b63548f0f.tar.gz mruby-4385590d31d74efb2de3208ef1fc371b63548f0f.zip | |
pack.c: reduce dispatch in `pack_unpack()`.
Diffstat (limited to 'mrbgems/mruby-pack')
| -rw-r--r-- | mrbgems/mruby-pack/src/pack.c | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/mrbgems/mruby-pack/src/pack.c b/mrbgems/mruby-pack/src/pack.c index 0e76e3f92..9a859da51 100644 --- a/mrbgems/mruby-pack/src/pack.c +++ b/mrbgems/mruby-pack/src/pack.c @@ -1501,25 +1501,23 @@ pack_unpack(mrb_state *mrb, mrb_value str, int single) continue; } - if (flags & PACK_FLAG_COUNT2) { - sptr = (const unsigned char *)RSTRING_PTR(str) + srcidx; - switch (dir) { - case PACK_DIR_HEX: - srcidx += unpack_h(mrb, sptr, srclen - srcidx, result, count, flags); - break; - case PACK_DIR_STR: - srcidx += unpack_a(mrb, sptr, srclen - srcidx, result, count, flags); - break; - case PACK_DIR_BASE64: - srcidx += unpack_m(mrb, sptr, srclen - srcidx, result); - break; - case PACK_DIR_QENC: - srcidx += unpack_M(mrb, sptr, srclen - srcidx, result); - break; - default: - break; - } + sptr = (const unsigned char *)RSTRING_PTR(str) + srcidx; + switch (dir) { + case PACK_DIR_HEX: + srcidx += unpack_h(mrb, sptr, srclen - srcidx, result, count, flags); + continue; + case PACK_DIR_STR: + srcidx += unpack_a(mrb, sptr, srclen - srcidx, result, count, flags); continue; + case PACK_DIR_BASE64: + srcidx += unpack_m(mrb, sptr, srclen - srcidx, result); + continue; + break; + case PACK_DIR_QENC: + srcidx += unpack_M(mrb, sptr, srclen - srcidx, result); + continue; + default: + break; } while (count != 0) { |
