diff --git a/src/symbol.c b/src/symbol.c index 620ae3418..e09e9019d 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -69,32 +69,21 @@ 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; - - 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