aboutsummaryrefslogtreecommitdiff
path: root/src/lib_bit.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib_bit.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lib_bit.c b/src/lib_bit.c
index 38c0f578..e08cd883 100644
--- a/src/lib_bit.c
+++ b/src/lib_bit.c
@@ -155,7 +155,8 @@ LJLIB_CF(bit_tohex) LJLIB_REC(.)
155#endif 155#endif
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 = (int32_t)(~(uint32_t)n+1u); sf |= STRFMT_F_UPPER; }
159 if ((uint32_t)n > 254) n = 254;
159 sf |= ((SFormat)((n+1)&255) << STRFMT_SH_PREC); 160 sf |= ((SFormat)((n+1)&255) << STRFMT_SH_PREC);
160#if LJ_HASFFI 161#if LJ_HASFFI
161 if (n < 16) b &= ((uint64_t)1 << 4*n)-1; 162 if (n < 16) b &= ((uint64_t)1 << 4*n)-1;