aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2009-06-18 13:51:03 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2009-06-18 13:51:03 -0300
commitf4eed60ca9de17fd521891688de1e53390d67214 (patch)
tree7efbae17ec0293984a961c9c0db52241e1c85d1b
parentc1de1fdac6a7873f8ae016785f364c5ae10abb1e (diff)
downloadlua-f4eed60ca9de17fd521891688de1e53390d67214.tar.gz
lua-f4eed60ca9de17fd521891688de1e53390d67214.tar.bz2
lua-f4eed60ca9de17fd521891688de1e53390d67214.zip
better treatment of integer formats in string.format
-rw-r--r--lstrlib.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/lstrlib.c b/lstrlib.c
index cd10c320..6c8e1ba4 100644
--- a/lstrlib.c
+++ b/lstrlib.c
@@ -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':