aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2013-05-15 13:54:22 +0200
committerMike Pall <mike>2013-05-15 13:54:22 +0200
commita86017784eb6195bed5bbe1252204eb871f83270 (patch)
tree3fd2ca6a6c9492aaa1d536d182dd52d105ce7a9e
parent4c39e9ffc89cf5ddb691f1cbed0d6e23571a3288 (diff)
downloadluajit-a86017784eb6195bed5bbe1252204eb871f83270.tar.gz
luajit-a86017784eb6195bed5bbe1252204eb871f83270.tar.bz2
luajit-a86017784eb6195bed5bbe1252204eb871f83270.zip
Another fix for bit.tohex().
-rw-r--r--src/lib_bit.c7
1 files changed, 6 insertions, 1 deletions
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)
156 SBuf *sb = lj_buf_tmp_(L); 156 SBuf *sb = lj_buf_tmp_(L);
157 SFormat sf = (STRFMT_UINT|STRFMT_T_HEX); 157 SFormat sf = (STRFMT_UINT|STRFMT_T_HEX);
158 if (n < 0) { n = -n; sf |= STRFMT_F_UPPER; } 158 if (n < 0) { n = -n; sf |= STRFMT_F_UPPER; }
159 sf |= ((SFormat)(n+1) << STRFMT_SH_PREC); 159 sf |= ((SFormat)((n+1)&255) << STRFMT_SH_PREC);
160#if LJ_HASFFI
161 if (n < 16) b &= ((uint64_t)1 << 4*n)-1;
162#else
163 if (n < 8) b &= (1u << 4*n)-1;
164#endif
160 sb = lj_strfmt_putfxint(sb, sf, b); 165 sb = lj_strfmt_putfxint(sb, sf, b);
161 setstrV(L, L->top-1, lj_buf_str(L, sb)); 166 setstrV(L, L->top-1, lj_buf_str(L, sb));
162 lj_gc_check(L); 167 lj_gc_check(L);