aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lj_str.c10
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 '%':