소스 검색

detail (lua_resume should empty coroutine stack even if they do not
fit into caller stack)

Roberto Ierusalimschy 15 년 전
부모
커밋
64d5df7772
1개의 변경된 파일2개의 추가작업 그리고 1개의 파일을 삭제
  1. 2 1
      lbaselib.c

+ 2 - 1
lbaselib.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lbaselib.c,v 1.228 2009/11/26 11:39:20 roberto Exp roberto $
+** $Id: lbaselib.c,v 1.229 2009/11/27 15:38:51 roberto Exp roberto $
 ** Basic library
 ** See Copyright Notice in lua.h
 */
@@ -568,6 +568,7 @@ static int auxresume (lua_State *L, lua_State *co, int narg) {
   if (status == LUA_OK || status == LUA_YIELD) {
     int nres = lua_gettop(co);
     if (!lua_checkstack(L, nres + 1)) {
+      lua_pop(co, nres);  /* remove results anyway */
       lua_pushliteral(L, "too many results to resume");
       return -1;  /* error flag */
     }