diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2020-03-16 14:13:13 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2020-03-16 14:13:13 -0300 |
| commit | 513559cc4760392b6fa33754c516683ef49dba22 (patch) | |
| tree | 7080bdf0e31f0ce14545a0e8a68daff3b36cec62 /lstrlib.c | |
| parent | e4607523234f16ed9ed0436340b9315377dbfe7f (diff) | |
| download | lua-513559cc4760392b6fa33754c516683ef49dba22.tar.gz lua-513559cc4760392b6fa33754c516683ef49dba22.tar.bz2 lua-513559cc4760392b6fa33754c516683ef49dba22.zip | |
Fixed bug in 'string.format("%p")'
The string "(null)" used for non-collectable values must be printed as a
string, not as a pointer. (Bug introduced in commit e0cbaa50fa7).
Diffstat (limited to 'lstrlib.c')
| -rw-r--r-- | lstrlib.c | 6 |
1 files changed, 4 insertions, 2 deletions
| @@ -1271,8 +1271,10 @@ static int str_format (lua_State *L) { | |||
| 1271 | } | 1271 | } |
| 1272 | case 'p': { | 1272 | case 'p': { |
| 1273 | const void *p = lua_topointer(L, arg); | 1273 | const void *p = lua_topointer(L, arg); |
| 1274 | if (p == NULL) | 1274 | if (p == NULL) { /* avoid calling 'printf' with argument NULL */ |
| 1275 | p = "(null)"; /* NULL not a valid parameter in ISO C 'printf' */ | 1275 | p = "(null)"; /* result */ |
| 1276 | form[strlen(form) - 1] = 's'; /* format it as a string */ | ||
| 1277 | } | ||
| 1276 | nb = l_sprintf(buff, maxitem, form, p); | 1278 | nb = l_sprintf(buff, maxitem, form, p); |
| 1277 | break; | 1279 | break; |
| 1278 | } | 1280 | } |
