diff options
author | Mike Pall <mike> | 2010-01-14 12:08:32 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2010-01-14 12:08:32 +0100 |
commit | a431d6f35cb698b7d99db535958d807688f3465e (patch) | |
tree | be2bec2a55571be92db2c38cdbf72510380590cc /src | |
parent | 767035f0311cd16fca001acbb26a4a6cca239405 (diff) | |
download | luajit-a431d6f35cb698b7d99db535958d807688f3465e.tar.gz luajit-a431d6f35cb698b7d99db535958d807688f3465e.tar.bz2 luajit-a431d6f35cb698b7d99db535958d807688f3465e.zip |
Shorten %p format for pure 32 bit pointers on x64.
Diffstat (limited to 'src')
-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 '%': |