aboutsummaryrefslogtreecommitdiff
path: root/testes (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Bug: Lua can generate wrong code when _ENV is <const>Roberto Ierusalimschy2022-02-151-0/+10
|
* Bug: finalizer calling exit can corrupt finalization orderRoberto Ierusalimschy2021-12-221-0/+28
| | | | | 'os.exit' can call lua_close again, separating new finalizers created after all previous finalizers were already separated.
* Fix debug information about finalizersRoberto Ierusalimschy2021-12-142-2/+2
| | | | | | 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.)
* Bug: GC is not reentrantRoberto Ierusalimschy2021-12-132-5/+6
| | | | As the GC is not reentrant, finalizers should not be able to invoke it.
* Wrong assert in 'collectvalidlines'Roberto Ierusalimschy2021-11-251-1/+1
|
* Avoid OP_VARARGPREP for active linesRoberto Ierusalimschy2021-11-101-0/+43
| | | | | when building the table 'activelines' for a vararg function, this first instruction does not make the first line active.
* Bug: Wrong status in coroutine during resetRoberto Ierusalimschy2021-11-081-1/+43
| | | | | | | | | 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.
* Bug: C stack overflow with coroutinesRoberto Ierusalimschy2021-11-031-0/+14
| | | | | | 'coroutine.resume' did not increment counter of C calls when continuing execution after a protected error (that is, while running 'precover').
* Avoid overflows when incrementing parameters in CRoberto Ierusalimschy2021-09-222-0/+23
| | | | | | 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).
* Revamp of format validation in 'string.format'Roberto Ierusalimschy2021-09-031-8/+28
| | | | | When calling 'sprintf', not all conversion specifiers accept all flags; some combinations are undefined behavior.
* Detail in 'testes/math.lua'Roberto Ierusalimschy2021-08-181-0/+1
| | | | Added a print with the random seeds used in the tests of 'random'.
* Option '-l' can give a name for the global variable.Roberto Ierusalimschy2021-08-161-0/+5
| | | | Sintax for this option now is '-l [globname=]modname'.
* Added tests for string reuse by the scannerRoberto Ierusalimschy2021-08-112-1/+25
|
* Bug: luaL_tolstring may get confused with negative indexRoberto Ierusalimschy2021-07-221-0/+16
| | | | | When object has a '__name' metafield, 'luaL_tolstring' used the received index after pushing a string on the stack.
* Bug: Negation in 'luaV_shiftr' may overflowRoberto Ierusalimschy2021-07-221-0/+5
| | | | Negation of an unchecked lua_Integer overflows with mininteger.
* Bug: 'local function' can assign to '<const>' variablesRoberto Ierusalimschy2021-06-201-0/+2
|
* C functions can be tail called, tooRoberto Ierusalimschy2021-06-142-3/+3
| | | | | A tail call to a C function can have the behavior of a "real" tail call, reusing the stack frame of the caller.
* Bug: yielding in '__close' mess up number of returnsRoberto Ierusalimschy2021-04-161-0/+59
| | | | | Yielding in a __close metamethod called when returning vararg results changes the top and so messes up the number of returned values.
* Bug: tbc variables in "for" loops don't avoid tail callsRoberto Ierusalimschy2021-04-071-0/+23
|
* Changes in cache for function constantsRoberto Ierusalimschy2021-03-301-0/+14
| | | | | | | | 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.)
* Allow yields inside '__pairs'Roberto Ierusalimschy2021-03-291-0/+21
|
* File 'tracegc.lua' added to 'packtests'Roberto Ierusalimschy2021-03-101-0/+1
|
* lua_settop/lua_pop closes to-be-closed variablesRoberto Ierusalimschy2021-03-091-1/+25
| | | | | | The existence of 'lua_closeslot' is no reason for lua_pop not to close to-be-closed variables too. It is too error-prone for lua_pop not to close tbc variables being popped from the stack.
* Wrong assertion in 'getbaseline'Roberto Ierusalimschy2021-03-051-0/+8
| | | | | The assertion cannot compute 'f->abslineinfo[i]' when the initial estimate 'i' is -1.
* New test module 'tracegc'Roberto Ierusalimschy2021-03-014-18/+54
| | | | New module easies the inclusion of GC tracing in individual test files.
* New control for reentrancy of emergency collectionsRoberto Ierusalimschy2021-02-261-0/+8
| | | | | | Instead of assuming that shrinking a block may be an emergency collection, use an explicit field ('gcstopem') to stop emergency collections while GC is working.
* Bug (kind of) in 'isinstack'Roberto Ierusalimschy2021-02-251-0/+7
| | | | | | | The function 'isinstack' tried to work around the undefined behavior of subtracting two pointers that do not point to the same object, but the compiler killed to trick. (It optimizes out the safety check, because in a correct execution it will be always true.)
* Bug: 'string.concat' error message uses wrong formatRoberto Ierusalimschy2021-02-151-0/+3
|
* Bug: cannot allow the call 'debug.getinfo(0, ">")'Roberto Ierusalimschy2021-02-151-0/+1
| | | | | | A 'what' argument starting with '>' indicates that there is a function in the C stack, which won't be there if the first argument is not a function.
* '__close' methods can yield in the return of a C functionRoberto Ierusalimschy2021-02-121-1/+75
| | | | | | | When, inside a coroutine, a C function with to-be-closed slots return, the corresponding metamethods can yield. ('__close' metamethods called through 'lua_closeslot' still cannot yield, as there is no continuation to go when resuming.)
* New implementation for to-be-closed variablesRoberto Ierusalimschy2021-02-091-8/+41
| | | | | | | | To-be-closed variables are linked in their own list, embedded into the stack elements. (Due to alignment, this information does not change the size of the stack elements in most architectures.) This new list does not produce garbage and avoids memory errors when creating tbc variables.
* Small improvements in hooksRoberto Ierusalimschy2021-01-261-0/+22
| | | | | | | | | | - 'L->top' is set once in 'luaD_hook', instead of being set in 'luaD_hookcall' and 'rethook'; - resume discard arguments when returning after an yield inside a hook (arguments may interfere with the coroutine stack); - yield inside a hook asserts it has no arguments.
* Correct order of return hooks vs. close metamethodsRoberto Ierusalimschy2021-01-211-7/+70
| | | | | | The return hook should be called only after closing variables (which are still part of the function). C functions were calling the hook before the metamethods.
* Simpler handling of errors when creating tbc variablesRoberto Ierusalimschy2021-01-191-8/+5
| | | | | | New field 'lua_State.ptbc' keeps to-be-closed variable until its upvalue is created, so that it can be closed in case of a memory-allocation error.
* Allow yields in '__close' metamethods ater errorsRoberto Ierusalimschy2021-01-181-8/+40
| | | | | | Completes commit b07fc10e91a. '__close' metamethods can yield even when they are being called due to an error. '__close' metamethods from C functions are still not allowed to yield.
* Allow yields inside '__close' metamethodsRoberto Ierusalimschy2021-01-131-0/+88
| | | | | | | Initial implementation to allow yields inside '__close' metamethods. This current version still does not allow a '__close' metamethod to yield when called due to an error. '__close' metamethods from C functions also are not allowed to yield.
* New API function 'lua_closeslot'Roberto Ierusalimschy2021-01-111-12/+17
| | | | | | Closing a to-be-closed variable with 'lua_settop' is too restrictive, as it erases all slots above the variable. Moreover, it adds side effects to 'lua_settop', which should be a fairly basic function.
* Handles '__close' errors in coroutines in "coroutine style"Roberto Ierusalimschy2020-12-301-2/+39
| | | | | Errors in '__close' metamethods in coroutines are handled by the same logic that handles other errors, through 'recover'.
* Better error messages for calling non-callable objectsRoberto Ierusalimschy2020-12-293-4/+33
| | | | | | | When available, use the calling code to find a suitable name for what was being called; this is particularly useful for errors of non-callable metamethods. This commit also improved the debug information for order metamethods.
* No need to recheck close method before calling itRoberto Ierusalimschy2020-12-291-2/+44
| | | | | | | | A to-be-closed variable is constant and it must have a close metamethod when it is created. A program has to go out of its way (e.g., by changing the variable's metamethod) to invalidate that check. So, it is not worth to test that again. If the program tampers with the metamethod, Lua will raise a regular error when attempting to call it.
* Report last error in closing methodsRoberto Ierusalimschy2020-12-222-87/+27
| | | | | When there are multiple errors around closing methods, report the last error instead of the original.
* Upvalues removed from 'openupval' before being closedRoberto Ierusalimschy2020-12-211-17/+9
| | | | | | | Undo commit c220b0a5d0: '__close' is not called again in case of errors. (Upvalue is removed from the list before the call.) The common error that justified that change was C stack overflows, which are much rarer with the stackless implementation.
* 'coroutine.close'/'lua_resetthread' report original errorsRoberto Ierusalimschy2020-12-183-9/+28
| | | | | | Besides errors in closing methods, 'coroutine.close' and 'lua_resetthread' also consider the original error that stopped the thread, if any.
* Details (do not affect regular code)Roberto Ierusalimschy2020-12-071-0/+14
| | | | | | | * Avoids multiple definitions of 'lua_assert' in test file. * Smaller C-stack limit in test mode. * Note in the manual about the use of false * Extra test for constant reuse.
* Added test cases for error messages about goto/labelRoberto Ierusalimschy2020-12-031-0/+21
|
* Removed optimization for «if ... then goto»Roberto Ierusalimschy2020-11-111-22/+0
| | | | | That optimization was too complex and caused some weird traces when debugging. The more common case «if ... then break» was kept.
* _PROMPT can have non-string valuesRoberto Ierusalimschy2020-10-261-0/+27
| | | | | | 'get_prompt' uses 'luaL_tolstring' to convert _PROMPT or _PROMPT2 value to a string. That conversion may invoke a '__tostring' metamethod.
* Fixed wrong trace of vararg functionsRoberto Ierusalimschy2020-10-191-0/+10
| | | | | Trace of vararg functions was skipping an instruction when returning from a call. (Bug introduced by commit 5d8ce05b3.)
* Fixed bug of keys removed from tables vs 'next'Roberto Ierusalimschy2020-10-141-0/+32
| | | | | | Fixed the bug that a key removed from a table might not be found again by 'next'. (This is needed to allow keys to be removed during a traversal.) This bug was introduced in commit 73ec04fc.
* 'lua_upvalueid' returns NULL on invalid upvalue indexRoberto Ierusalimschy2020-10-121-1/+1
|