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:
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.