diff options
| author | Mike Pall <mike> | 2013-05-15 13:54:22 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2013-05-15 13:54:22 +0200 |
| commit | a86017784eb6195bed5bbe1252204eb871f83270 (patch) | |
| tree | 3fd2ca6a6c9492aaa1d536d182dd52d105ce7a9e | |
| parent | 4c39e9ffc89cf5ddb691f1cbed0d6e23571a3288 (diff) | |
| download | luajit-a86017784eb6195bed5bbe1252204eb871f83270.tar.gz luajit-a86017784eb6195bed5bbe1252204eb871f83270.tar.bz2 luajit-a86017784eb6195bed5bbe1252204eb871f83270.zip | |
Another fix for bit.tohex().
| -rw-r--r-- | src/lib_bit.c | 7 |
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); |
