diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2009-06-18 13:51:03 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2009-06-18 13:51:03 -0300 |
| commit | f4eed60ca9de17fd521891688de1e53390d67214 (patch) | |
| tree | 7efbae17ec0293984a961c9c0db52241e1c85d1b | |
| parent | c1de1fdac6a7873f8ae016785f364c5ae10abb1e (diff) | |
| download | lua-f4eed60ca9de17fd521891688de1e53390d67214.tar.gz lua-f4eed60ca9de17fd521891688de1e53390d67214.tar.bz2 lua-f4eed60ca9de17fd521891688de1e53390d67214.zip | |
better treatment of integer formats in string.format
| -rw-r--r-- | lstrlib.c | 13 |
1 files changed, 6 insertions, 7 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lstrlib.c,v 1.141 2008/06/12 14:21:18 roberto Exp roberto $ | 2 | ** $Id: lstrlib.c,v 1.142 2009/02/03 19:39:19 roberto Exp roberto $ |
| 3 | ** Standard library for string operations and pattern-matching | 3 | ** Standard library for string operations and pattern-matching |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -777,14 +777,13 @@ static int str_format (lua_State *L) { | |||
| 777 | sprintf(buff, form, (int)luaL_checknumber(L, arg)); | 777 | sprintf(buff, form, (int)luaL_checknumber(L, arg)); |
| 778 | break; | 778 | break; |
| 779 | } | 779 | } |
| 780 | case 'd': case 'i': { | 780 | case 'd': case 'i': |
| 781 | addintlen(form); | ||
| 782 | sprintf(buff, form, (LUA_INTFRM_T)luaL_checknumber(L, arg)); | ||
| 783 | break; | ||
| 784 | } | ||
| 785 | case 'o': case 'u': case 'x': case 'X': { | 781 | case 'o': case 'u': case 'x': case 'X': { |
| 782 | lua_Number n = luaL_checknumber(L, arg); | ||
| 783 | LUA_INTFRM_T r = (n < 0) ? (LUA_INTFRM_T)n : | ||
| 784 | (LUA_INTFRM_T)(unsigned LUA_INTFRM_T)n; | ||
| 786 | addintlen(form); | 785 | addintlen(form); |
| 787 | sprintf(buff, form, (unsigned LUA_INTFRM_T)luaL_checknumber(L, arg)); | 786 | sprintf(buff, form, r); |
| 788 | break; | 787 | break; |
| 789 | } | 788 | } |
| 790 | case 'e': case 'E': case 'f': | 789 | case 'e': case 'E': case 'f': |
