diff options
Diffstat (limited to '')
-rw-r--r-- | lstrlib.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lstrlib.c,v 1.163 2011/01/26 16:30:02 roberto Exp roberto $ | 2 | ** $Id: lstrlib.c,v 1.164 2011/02/07 19:15:24 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 | */ |
@@ -889,16 +889,16 @@ static int str_format (lua_State *L) { | |||
889 | } | 889 | } |
890 | case 's': { | 890 | case 's': { |
891 | size_t l; | 891 | size_t l; |
892 | const char *s = luaL_checklstring(L, arg, &l); | 892 | const char *s = luaL_tolstring(L, arg, &l); |
893 | if (!strchr(form, '.') && l >= 100) { | 893 | if (!strchr(form, '.') && l >= 100) { |
894 | /* no precision and string is too long to be formatted; | 894 | /* no precision and string is too long to be formatted; |
895 | keep original string */ | 895 | keep original string */ |
896 | lua_pushvalue(L, arg); | ||
897 | luaL_addvalue(&b); | 896 | luaL_addvalue(&b); |
898 | break; | 897 | break; |
899 | } | 898 | } |
900 | else { | 899 | else { |
901 | nb = sprintf(buff, form, s); | 900 | nb = sprintf(buff, form, s); |
901 | lua_pop(L, 1); /* remove result from 'luaL_tolstring' */ | ||
902 | break; | 902 | break; |
903 | } | 903 | } |
904 | } | 904 | } |