| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
'luaD_throw' may call 'luaE_resetthread', which returns an error code
but clears 'L->status'; so, 'luaD_throw' should set that status again.
|
|
|
|
|
|
|
| |
In function 'luaK_exp2val', used to generate code for indices: Macro
'hasjumps' does not consider the case when the whole expression is a
"jump" (a test). In all other of its uses, the surrounding code ensures
that the expression cannot be VJMP.
|
|
|
|
|
|
| |
'incomplete' was popping error message that should be used in case
there is no more lines to complete the input, that is, 'pushline'
returns NULL, due to end of file.
|
| |
|
|
|
|
|
| |
Lua seg. faults when asked to create the 'activelines' table for a
vararg function with no debug information.
|
| |
|
|
|
|
|
|
|
|
| |
Yielding in a hook must decrease the program counter, because it already
counted an instruction that, in the end, was not executed. However,
that decrement should be done only when about to restart the thread.
Otherwise, inspecting the thread with the debug library shows it one
instruction behind of where it really is.
|
|
|
|
|
|
| |
'getobjname' now broken in two, a basic version that handles locals,
upvalues, and constants, and a full version, which uses the basic
version to handle table accesses (globals and fields).
|
|
|
|
|
| |
Test is too non portable. (For instance, it does not work for
different number types.)
|
| |
|
|
|
|
|
| |
The few UTF-8 test files are commented as such, and there is only one
non UTF-8 test file (to test non UTF-8 sources).
|
| |
|
|
|
|
|
|
| |
Like 'require', the command-line option '-l' discards an optional
version suffix (everything after an hyphen) from a file name when
creating the module name.
|
| |
|
|
|
|
|
| |
The size of the list of upvalue names are stored separated from the
size of the list of upvalues, but they share the same array.
|
|
|
|
|
| |
It also causes 'L->top' to be wrong when the error happens,
triggering an 'assert'.
|
|
|
|
|
| |
Test files are more polite regarding the use of globals when locals
would do, and when globals are necessary deleting them after use.
|
|
|
|
| |
Everything depends on the Lua version (as given by 'lua.h')
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Subtracting a small non-negative int from a non-negative int cannot
overflow, and adding a non-negative int to INT_MIN cannot overflow.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Function 'leaveblock' was generating "break" label before removing
variables from the closing block. If 'createlabel' created a 'close'
instruction (which it did when matching a goto/break that exited
the scope of an upvalue), that instruction would use the wrong level.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
'luaD_growstack' already checks that. This commit also fixes an
internal bug in 'luaD_growstack': a large 'n' could cause an arithmetic
overflow when computing 'needed'.
|
| |
|
| |
|
|
|
|
|
| |
'os.exit' can call lua_close again, separating new finalizers
created after all previous finalizers were already separated.
|
|
|
|
|
|
| |
The flag CIST_FIN does not mark a finalizer, but the function that was
running when the finalizer was called. (So, the function did not call
the finalizer, but it looks that way in the stack.)
|
|
|
|
| |
As the GC is not reentrant, finalizers should not be able to invoke it.
|
| |
|
|
|
|
|
| |
when building the table 'activelines' for a vararg function, this
first instruction does not make the first line active.
|
|
|
|
|
|
|
|
|
| |
When closing variables during 'coroutine.close' or 'lua_resetthread',
the status of a coroutine must be set to LUA_OK; a coroutine should
not run with any other status. (See assertion in 'lua_callk'.)
After the reset, the status should be kept as normal, as any error
was already reported.
|
|
|
|
|
|
| |
'coroutine.resume' did not increment counter of C calls when
continuing execution after a protected error (that is,
while running 'precover').
|
|
|
|
|
|
| |
Any C function can receive maxinteger as an integer argument, and
therefore cannot increment it without some care (e.g., doing unsigned
arithmetic as the core does).
|
|
|
|
|
| |
When calling 'sprintf', not all conversion specifiers accept all
flags; some combinations are undefined behavior.
|
|
|
|
| |
Added a print with the random seeds used in the tests of 'random'.
|
|
|
|
| |
Sintax for this option now is '-l [globname=]modname'.
|
| |
|
|
|
|
|
| |
When object has a '__name' metafield, 'luaL_tolstring' used the
received index after pushing a string on the stack.
|
|
|
|
| |
Negation of an unchecked lua_Integer overflows with mininteger.
|
| |
|
|
|
|
|
| |
A tail call to a C function can have the behavior of a "real" tail
call, reusing the stack frame of the caller.
|
|
|
|
|
| |
Yielding in a __close metamethod called when returning vararg results
changes the top and so messes up the number of returned values.
|
| |
|
|
|
|
|
|
|
|
| |
In 'lcode.c', when adding constants to the list of constants of a
function, integers represent themselves in the cache and floats
with integral values get a small delta to avoid collision with
integers. (This change avoids creating artificial addresses; the old
implementation converted integers to pointers to index the cache.)
|