lua

A copy of the Lua development repository
Log | Files | Refs | README

commit cbdf4969ec425f1df1ade358425c0bf0bf811d83
parent 262dc5729a28b2bad0b6413d4eab2290d14395cf
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date:   Thu, 23 May 2024 09:54:59 -0300

Manual: errors in lua_toclose are not memory errors

Diffstat:
Mlauxlib.c | 2+-
Mliolib.c | 2+-
Mmanual/manual.of | 5++++-
3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/lauxlib.c b/lauxlib.c @@ -951,7 +951,7 @@ LUALIB_API const char *luaL_tolstring (lua_State *L, int idx, size_t *len) { LUALIB_API void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup) { luaL_checkstack(L, nup, "too many upvalues"); for (; l->name != NULL; l++) { /* fill the table with given functions */ - if (l->func == NULL) /* place holder? */ + if (l->func == NULL) /* placeholder? */ lua_pushboolean(L, 0); else { int i; diff --git a/liolib.c b/liolib.c @@ -773,7 +773,7 @@ static const luaL_Reg meth[] = { ** metamethods for file handles */ static const luaL_Reg metameth[] = { - {"__index", NULL}, /* place holder */ + {"__index", NULL}, /* placeholder */ {"__gc", f_gc}, {"__close", f_gc}, {"__tostring", f_tostring}, diff --git a/manual/manual.of b/manual/manual.of @@ -4475,7 +4475,7 @@ otherwise, returns @id{NULL}. } @APIEntry{void lua_toclose (lua_State *L, int index);| -@apii{0,0,m} +@apii{0,0,v} Marks the given index in the stack as a to-be-closed slot @see{to-be-closed}. @@ -4492,6 +4492,9 @@ A slot marked as to-be-closed should not be removed from the stack by any other function in the API except @Lid{lua_settop} or @Lid{lua_pop}, unless previously deactivated by @Lid{lua_closeslot}. +This function raises an error if the value at the given slot +neither has a @idx{__close} metamethod nor is a false value. + This function should not be called for an index that is equal to or below an active to-be-closed slot.