@ -143,7 +143,7 @@ that is, @x{arrays} that can have as indices not only numbers,
but any Lua value except @nil and @x{NaN}.
(@emphx{Not a Number} is a special floating-point value
used by the @x{IEEE 754} standard to represent
undefined or unrepresentable numerical results, such as @T{0/0}.)
undefined numerical results, such as @T{0/0}.)
Tables can be @emph{heterogeneous};
that is, they can contain values of all types (except @nil).
Any key with value @nil is not considered part of the table.
@ -670,8 +670,8 @@ are called when the garbage collector detects that the
corresponding table or userdata is unreachable.
Finalizers allow you to coordinate Lua's garbage collection
with external resource management
( such as closing files, network or database connections,
or freeing your own memory) .
such as closing files, network or database connections,
or freeing your own memory.
For an object (table or userdata) to be finalized when collected,
you must @emph{mark} it for finalization.
@ -1323,11 +1323,12 @@ labels in Lua are considered statements too:
}
A label is visible in the entire block where it is defined,
except
inside nested blocks where a label with the same name is defined and
inside nested functions.
except inside nested functions.
A goto may jump to any visible label as long as it does not
enter into the scope of a local variable.
A label should not be declared
where a label with the same name is visible,
even if this other label has been declared in an enclosing block.
Labels and empty statements are called @def{void statements},
as they perform no actions.
@ -1537,7 +1538,7 @@ goes out of scope, including normal block termination,
exiting its block by @Rw{break}/@Rw{goto}/@Rw{return},
or exiting by an error.
Here, to \ emph{close} a value means
Here, to @ emph{close} a value means
to call its @idx{__close} metamethod.
If the value is @nil, it is ignored;
otherwise,
@ -4236,7 +4237,7 @@ indicates whether the operation succeeded.
Converts the value at the given index to a generic
@N{C pointer} (@T{void*}).
The value can be a userdata, a table, a thread, or a function;
The value can be a userdata, a table, a thread, a string, or a function;
otherwise, @id{lua_topointer} returns @id{NULL}.
Different objects will give different pointers.
There is no way to convert the pointer back to its original value.
@ -6712,8 +6713,10 @@ to save space.
Functions with upvalues have only their number of upvalues saved.
When (re)loaded,
those upvalues receive fresh instances containing @nil.
(You can use the debug library to serialize
those upvalues receive fresh instances.
(See the @Lid{load} function for details about
how these upvalues are initialized.
You can use the debug library to serialize
and reload the upvalues of a function
in a way adequate to your needs.)
@ -6747,12 +6750,12 @@ after the two indices.
Returns a formatted version of its variable number of arguments
following the description given in its first argument (which must be a string).
The format string follows the same rules as the @ANSI{sprintf}.
The only differences are that the options/ modifiers
The only differences are that the conversion specifiers and modifiers
@T{*}, @id{h}, @id{L}, @id{l}, @id{n},
and @id{p} are not supported
and that there is an extra option , @id{q}.
and that there is an extra specifier , @id{q}.
The @id{q} option formats booleans, nil, numbers, and strings
The specifier @id{q} formats booleans, nil, numbers, and strings
in a way that the result is a valid constant in Lua source code.
Booleans and nil are written in the obvious way
(@id{true}, @id{false}, @id{nil}).
@ -6770,22 +6773,23 @@ may produce the string:
"a string with \"quotes\" and \
new line"
}
This specifier does not support modifiers (flags, width, length).
Option s
The conversion specifier s
@id{A}, @id{a}, @id{E}, @id{e}, @id{f},
@id{G}, and @id{g} all expect a number as argument.
Option s @id{c}, @id{d},
The specifier s @id{c}, @id{d},
@id{i}, @id{o}, @id{u}, @id{X}, and @id{x}
expect an integer.
When Lua is compiled with a C89 compiler,
option s @id{A} and @id{a} (hexadecimal floats)
do not support any modifier (flag s, width, length) .
the specifier s @id{A} and @id{a} (hexadecimal floats)
do not support modifiers.
Option @id{s} expects a string;
The specifier @id{s} expects a string;
if its argument is not a string,
it is converted to one following the same rules of @Lid{tostring}.
If the option has any modifier (flags, width, length) ,
the string argument should not contain @x{embedded zeros}.
If the specifier has any modifier ,
the corresponding string argument should not contain @x{embedded zeros}.
}
@ -8009,8 +8013,8 @@ or there is any input from some special files
}
}
For the last two cases, @id{size}
specifies the size of the buffer, in bytes.
For the last two cases,
@id{size} is a hint for the size of the buffer, in bytes.
The default is an appropriate size.
}
@ -8698,6 +8702,12 @@ When a coroutine finishes with an error,
its stack is unwound (to run any pending closing methods).
}
@item{
A label for a @Rw{goto} cannot be declared where a label with the same
name is visible, even if this other label is declared in an enclosing
block.
}
}
}