pack.c: reduce dispatch in `pack_unpack()`.

parent bfe2bd49
...@@ -1501,25 +1501,23 @@ pack_unpack(mrb_state *mrb, mrb_value str, int single) ...@@ -1501,25 +1501,23 @@ pack_unpack(mrb_state *mrb, mrb_value str, int single)
continue; continue;
} }
if (flags & PACK_FLAG_COUNT2) { sptr = (const unsigned char *)RSTRING_PTR(str) + srcidx;
sptr = (const unsigned char *)RSTRING_PTR(str) + srcidx; switch (dir) {
switch (dir) { case PACK_DIR_HEX:
case PACK_DIR_HEX: srcidx += unpack_h(mrb, sptr, srclen - srcidx, result, count, flags);
srcidx += unpack_h(mrb, sptr, srclen - srcidx, result, count, flags); continue;
break; case PACK_DIR_STR:
case PACK_DIR_STR: srcidx += unpack_a(mrb, sptr, srclen - srcidx, result, count, flags);
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;
}
continue; 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) { while (count != 0) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment