From a86017784eb6195bed5bbe1252204eb871f83270 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Wed, 15 May 2013 13:54:22 +0200 Subject: [PATCH] Another fix for bit.tohex(). --- src/lib_bit.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib_bit.c b/src/lib_bit.c index dec0cb87..a258484d 100644 --- a/src/lib_bit.c +++ b/src/lib_bit.c @@ -156,7 +156,12 @@ LJLIB_CF(bit_tohex) SBuf *sb = lj_buf_tmp_(L); SFormat sf = (STRFMT_UINT|STRFMT_T_HEX); if (n < 0) { n = -n; sf |= STRFMT_F_UPPER; } - sf |= ((SFormat)(n+1) << STRFMT_SH_PREC); + sf |= ((SFormat)((n+1)&255) << STRFMT_SH_PREC); +#if LJ_HASFFI + if (n < 16) b &= ((uint64_t)1 << 4*n)-1; +#else + if (n < 8) b &= (1u << 4*n)-1; +#endif sb = lj_strfmt_putfxint(sb, sf, b); setstrV(L, L->top-1, lj_buf_str(L, sb)); lj_gc_check(L);