diff options
-rw-r--r-- | src/lj_str.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/lj_str.c b/src/lj_str.c index c49ecd2a..c8b175e5 100644 --- a/src/lj_str.c +++ b/src/lj_str.c | |||
@@ -259,12 +259,16 @@ const char *lj_str_pushvf(lua_State *L, const char *fmt, va_list argp) | |||
259 | #define FMTP_CHARS (2*sizeof(ptrdiff_t)) | 259 | #define FMTP_CHARS (2*sizeof(ptrdiff_t)) |
260 | char buff[2+FMTP_CHARS]; | 260 | char buff[2+FMTP_CHARS]; |
261 | ptrdiff_t p = (ptrdiff_t)(va_arg(argp, void *)); | 261 | ptrdiff_t p = (ptrdiff_t)(va_arg(argp, void *)); |
262 | int i; | 262 | ptrdiff_t i, lasti = 2+FMTP_CHARS; |
263 | #if LJ_64 | ||
264 | if ((p >> 32) == 0) /* Shorten output for true 32 bit pointers. */ | ||
265 | lasti = 2+2*4; | ||
266 | #endif | ||
263 | buff[0] = '0'; | 267 | buff[0] = '0'; |
264 | buff[1] = 'x'; | 268 | buff[1] = 'x'; |
265 | for (i = 2+FMTP_CHARS-1; i >= 2; i--, p >>= 4) | 269 | for (i = lasti-1; i >= 2; i--, p >>= 4) |
266 | buff[i] = "0123456789abcdef"[(p & 15)]; | 270 | buff[i] = "0123456789abcdef"[(p & 15)]; |
267 | addstr(L, sb, buff, 2+FMTP_CHARS); | 271 | addstr(L, sb, buff, lasti); |
268 | break; | 272 | break; |
269 | } | 273 | } |
270 | case '%': | 274 | case '%': |