From 2c8af128f428e3acdc1d47e727fae88a574d056e Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shuji Date: Sat, 16 Feb 2019 20:48:33 +0900 Subject: Add length argument for `sym_inline_unpack()` `sym_inline_unpack_with_bit()` is moved inside of `sym_inline_unpack()` because this is used only one place. --- src/symbol.c | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/symbol.c b/src/symbol.c index 620ae3418..e09e9019d 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -69,33 +69,22 @@ sym_inline_pack(const char *name, uint16_t len) } static const char* -sym_inline_unpack_with_bit(mrb_sym sym, char *buf, int bit_per_char) +sym_inline_unpack(mrb_sym sym, char *buf, mrb_int *lenp) { + int bit_per_char = sym&2 ? 5 : 6; /* all lower case if `sym&2` is true */ int i; - for (i=0; i<30/bit_per_char; i++) { - uint32_t bits; - char c; + mrb_assert(sym&1); - bits = sym>>(i*bit_per_char+2) & (1<>(i*bit_per_char+2) & (1<symbuf); - if (lenp) *lenp = strlen(mrb->symbuf); - return mrb->symbuf; + return sym_inline_unpack(sym, mrb->symbuf, lenp); } #endif -- cgit v1.2.3