Improvements in the manual

Plus details
This commit is contained in:
Roberto Ierusalimschy 2025-01-10 15:11:54 -03:00
parent 7ca3c40b50
commit 915c29f8bd
4 changed files with 23 additions and 18 deletions

3
lapi.c
View file

@ -671,9 +671,8 @@ static int auxgetstr (lua_State *L, const TValue *t, const char *k) {
lu_byte tag; lu_byte tag;
TString *str = luaS_new(L, k); TString *str = luaS_new(L, k);
luaV_fastget(t, str, s2v(L->top.p), luaH_getstr, tag); luaV_fastget(t, str, s2v(L->top.p), luaH_getstr, tag);
if (!tagisempty(tag)) { if (!tagisempty(tag))
api_incr_top(L); api_incr_top(L);
}
else { else {
setsvalue2s(L, L->top.p, str); setsvalue2s(L, L->top.p, str);
api_incr_top(L); api_incr_top(L);

2
ldo.c
View file

@ -367,7 +367,7 @@ void luaD_shrinkstack (lua_State *L) {
luaD_reallocstack(L, nsize, 0); /* ok if that fails */ luaD_reallocstack(L, nsize, 0); /* ok if that fails */
} }
else /* don't change stack */ else /* don't change stack */
condmovestack(L,{},{}); /* (change only for debugging) */ condmovestack(L,(void)0,(void)0); /* (change only for debugging) */
luaE_shrinkCI(L); /* shrink CI list */ luaE_shrinkCI(L); /* shrink CI list */
} }

View file

@ -186,7 +186,7 @@ typedef struct stringtable {
*/ */
struct CallInfo { struct CallInfo {
StkIdRel func; /* function index in the stack */ StkIdRel func; /* function index in the stack */
StkIdRel top; /* top for this function */ StkIdRel top; /* top for this function */
struct CallInfo *previous, *next; /* dynamic call link */ struct CallInfo *previous, *next; /* dynamic call link */
union { union {
struct { /* only for Lua functions */ struct { /* only for Lua functions */

View file

@ -1428,7 +1428,7 @@ except inside nested functions.
A goto can jump to any visible label as long as it does not A goto can jump to any visible label as long as it does not
enter into the scope of a local variable. enter into the scope of a local variable.
A label should not be declared A label should not be declared
where a label with the same name is visible, where a previous label with the same name is visible,
even if this other label has been declared in an enclosing block. even if this other label has been declared in an enclosing block.
The @Rw{break} statement terminates the execution of a The @Rw{break} statement terminates the execution of a
@ -3835,7 +3835,7 @@ This macro may evaluate its arguments more than once.
Converts the number at acceptable index @id{idx} to a string Converts the number at acceptable index @id{idx} to a string
and puts the result in @id{buff}. and puts the result in @id{buff}.
The buffer must have a size of at least @Lid{LUA_N2SBUFFSZ} bytes. The buffer must have a size of at least @defid{LUA_N2SBUFFSZ} bytes.
The conversion follows a non-specified format @see{coercion}. The conversion follows a non-specified format @see{coercion}.
The function returns the number of bytes written to the buffer The function returns the number of bytes written to the buffer
(including the final zero), (including the final zero),
@ -3997,25 +3997,22 @@ Lua will call @id{falloc} before raising the error.
Pushes onto the stack a formatted string Pushes onto the stack a formatted string
and returns a pointer to this string @see{constchar}. and returns a pointer to this string @see{constchar}.
It is similar to the @ANSI{sprintf}, The result is a copy of @id{fmt} with
but has two important differences. each @emph{conversion specifier} replaced by its respective
First, extra argument.
you do not have to allocate space for the result; A conversion specifier can be
the result is a Lua string and Lua takes care of memory allocation
(and deallocation, through garbage collection).
Second,
the conversion specifiers are quite restricted.
There are no flags, widths, or precisions.
The conversion specifiers can only be
@Char{%%} (inserts the character @Char{%}), @Char{%%} (inserts the character @Char{%}),
@Char{%s} (inserts a zero-terminated string, with no size restrictions), @Char{%s} (inserts a zero-terminated string, with no size restrictions),
@Char{%f} (inserts a @Lid{lua_Number}), @Char{%f} (inserts a @Lid{lua_Number}),
@Char{%I} (inserts a @Lid{lua_Integer}), @Char{%I} (inserts a @Lid{lua_Integer}),
@Char{%p} (inserts a pointer), @Char{%p} (inserts a void pointer),
@Char{%d} (inserts an @T{int}), @Char{%d} (inserts an @T{int}),
@Char{%c} (inserts an @T{int} as a one-byte character), and @Char{%c} (inserts an @T{int} as a one-byte character), and
@Char{%U} (inserts an @T{unsigned long} as a @x{UTF-8} byte sequence). @Char{%U} (inserts an @T{unsigned long} as a @x{UTF-8} byte sequence).
Every occurrence of @Char{%} in the string @id{fmt}
must form a valid conversion specifier.
} }
@APIEntry{void lua_pushglobaltable (lua_State *L);| @APIEntry{void lua_pushglobaltable (lua_State *L);|
@ -4413,7 +4410,7 @@ for the @Q{newindex} event @see{metatable}.
@APIEntry{void lua_settop (lua_State *L, int index);| @APIEntry{void lua_settop (lua_State *L, int index);|
@apii{?,?,e} @apii{?,?,e}
Accepts any index, @N{or 0}, Receives any acceptable stack index, @N{or 0},
and sets the stack top to this index. and sets the stack top to this index.
If the new top is greater than the old one, If the new top is greater than the old one,
then the new elements are filled with @nil. then the new elements are filled with @nil.
@ -9427,6 +9424,15 @@ Moreover, there were some changes in the parameters themselves.
@itemize{ @itemize{
@item{
In @Lid{lua_call} and related functions,
the maximum value for the number of required results
(@id{nresults}) is 250.
If you really need a larger value,
use @Lid{LUA_MULTRET} and then adjust the stack size.
Previously, this limit was unspecified.
}
@item{ @item{
@Lid{lua_newstate} has a third parameter, @Lid{lua_newstate} has a third parameter,
a seed for the hashing of strings. a seed for the hashing of strings.