Jelajahi Sumber

Lua call stack cleanup

abadc0de 12 tahun lalu
induk
melakukan
ab960df8a9
1 mengubah file dengan 0 tambahan dan 5 penghapusan
  1. 0 5
      mongoose.c

+ 0 - 5
mongoose.c

@@ -3934,14 +3934,12 @@ static int handle_lsp_request(struct mg_connection *, const char *,
 static int lsp_mg_error(lua_State *L) {
 static int lsp_mg_error(lua_State *L) {
   struct mg_connection *conn = lua_touserdata(L, lua_upvalueindex(1));
   struct mg_connection *conn = lua_touserdata(L, lua_upvalueindex(1));
   int top = lua_gettop(L);
   int top = lua_gettop(L);
-  if (top > 1) lua_settop(L, 1);
   if (top < 1) lua_pushstring(L, "unknown error");
   if (top < 1) lua_pushstring(L, "unknown error");
   // Get mg.onerror.
   // Get mg.onerror.
   lua_getglobal(L, "mg");
   lua_getglobal(L, "mg");
   lua_getfield(L, -1, "onerror");
   lua_getfield(L, -1, "onerror");
   // If mg.onerror is nil, silently stop processing chunks.
   // If mg.onerror is nil, silently stop processing chunks.
   if (lua_isnil(L, -1)) {
   if (lua_isnil(L, -1)) {
-    lua_settop(L, 0);
     lua_pushinteger(L, 1);
     lua_pushinteger(L, 1);
     return 1;
     return 1;
   }
   }
@@ -3951,13 +3949,10 @@ static int lsp_mg_error(lua_State *L) {
   if (lua_pcall(L, 1, 1, 0)) {
   if (lua_pcall(L, 1, 1, 0)) {
     // If mg.onerror fails, cry the error message and stop processing chunks.
     // If mg.onerror fails, cry the error message and stop processing chunks.
     cry(conn, "mg.onerror failed: %s", lua_tostring(L, -1));
     cry(conn, "mg.onerror failed: %s", lua_tostring(L, -1));
-    lua_settop(L, 0);
     lua_pushinteger(L, 1);
     lua_pushinteger(L, 1);
     return 1;
     return 1;
   }
   }
   // Return the return value from mg.onerror. Non-0 = stop processing chunks.
   // Return the return value from mg.onerror. Non-0 = stop processing chunks.
-  lua_replace(L, 1);
-  lua_settop(L, 1);
   return 1;
   return 1;
 }
 }