diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2015-11-02 12:02:35 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2015-11-02 12:02:35 -0200 |
| commit | 332a06bbd1a8835c810e52bbf68014d6956b50b8 (patch) | |
| tree | 41b25919098b635ec389827c9c7967bdfe347fb0 | |
| parent | ffd0d1232d3a681b3db960d3c30721c3090587d0 (diff) | |
| download | lua-332a06bbd1a8835c810e52bbf68014d6956b50b8.tar.gz lua-332a06bbd1a8835c810e52bbf68014d6956b50b8.tar.bz2 lua-332a06bbd1a8835c810e52bbf68014d6956b50b8.zip | |
'luaO_pushvfstring' now uses 'incr_top' to increment top.
| -rw-r--r-- | lobject.c | 20 |
1 files changed, 10 insertions, 10 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lobject.c,v 2.105 2015/06/18 14:26:05 roberto Exp roberto $ | 2 | ** $Id: lobject.c,v 2.106 2015/06/26 19:32:07 roberto Exp roberto $ |
| 3 | ** Some generic functions over Lua objects | 3 | ** Some generic functions over Lua objects |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -346,7 +346,8 @@ void luaO_tostring (lua_State *L, StkId obj) { | |||
| 346 | 346 | ||
| 347 | 347 | ||
| 348 | static void pushstr (lua_State *L, const char *str, size_t l) { | 348 | static void pushstr (lua_State *L, const char *str, size_t l) { |
| 349 | setsvalue2s(L, L->top++, luaS_newlstr(L, str, l)); | 349 | setsvalue2s(L, L->top, luaS_newlstr(L, str, l)); |
| 350 | incr_top(L); | ||
| 350 | } | 351 | } |
| 351 | 352 | ||
| 352 | 353 | ||
| @@ -357,7 +358,6 @@ const char *luaO_pushvfstring (lua_State *L, const char *fmt, va_list argp) { | |||
| 357 | for (;;) { | 358 | for (;;) { |
| 358 | const char *e = strchr(fmt, '%'); | 359 | const char *e = strchr(fmt, '%'); |
| 359 | if (e == NULL) break; | 360 | if (e == NULL) break; |
| 360 | luaD_checkstack(L, 2); /* fmt + item */ | ||
| 361 | pushstr(L, fmt, e - fmt); | 361 | pushstr(L, fmt, e - fmt); |
| 362 | switch (*(e+1)) { | 362 | switch (*(e+1)) { |
| 363 | case 's': { | 363 | case 's': { |
| @@ -375,17 +375,17 @@ const char *luaO_pushvfstring (lua_State *L, const char *fmt, va_list argp) { | |||
| 375 | break; | 375 | break; |
| 376 | } | 376 | } |
| 377 | case 'd': { | 377 | case 'd': { |
| 378 | setivalue(L->top++, va_arg(argp, int)); | 378 | setivalue(L->top, va_arg(argp, int)); |
| 379 | luaO_tostring(L, L->top - 1); | 379 | goto top2str; |
| 380 | break; | ||
| 381 | } | 380 | } |
| 382 | case 'I': { | 381 | case 'I': { |
| 383 | setivalue(L->top++, cast(lua_Integer, va_arg(argp, l_uacInt))); | 382 | setivalue(L->top, cast(lua_Integer, va_arg(argp, l_uacInt))); |
| 384 | luaO_tostring(L, L->top - 1); | 383 | goto top2str; |
| 385 | break; | ||
| 386 | } | 384 | } |
| 387 | case 'f': { | 385 | case 'f': { |
| 388 | setfltvalue(L->top++, cast_num(va_arg(argp, l_uacNumber))); | 386 | setfltvalue(L->top, cast_num(va_arg(argp, l_uacNumber))); |
| 387 | top2str: | ||
| 388 | incr_top(L); | ||
| 389 | luaO_tostring(L, L->top - 1); | 389 | luaO_tostring(L, L->top - 1); |
| 390 | break; | 390 | break; |
| 391 | } | 391 | } |
