mirror of
https://github.com/lua/lua
synced 2025-01-19 15:49:17 +03:00
bug: When a coroutine tries to resume a non-suspended coroutine,
it can do some mess (and break C assertions) before detecting the error.
This commit is contained in:
parent
e2dc807c6e
commit
697593d8d5
30
bugs
30
bugs
@ -3602,6 +3602,10 @@ patch = [[
|
||||
}
|
||||
|
||||
|
||||
-----------------------------------------------------------------
|
||||
-- Lua 5.3.3
|
||||
|
||||
|
||||
Bug{
|
||||
what = [[expression list with four or more expressions in
|
||||
a 'for' loop can crash the interpreter]],
|
||||
@ -3652,9 +3656,9 @@ It needs an "interceptor" 'memcmp' function that continues
|
||||
reading memory after a difference is found.]],
|
||||
patch = [[
|
||||
2c2
|
||||
< ** $Id: bugs,v 1.149 2016/07/15 17:24:09 roberto Exp roberto $
|
||||
< ** $Id: bugs,v 1.150 2016/07/19 17:10:45 roberto Exp roberto $
|
||||
---
|
||||
> ** $Id: bugs,v 1.149 2016/07/15 17:24:09 roberto Exp roberto $
|
||||
> ** $Id: bugs,v 1.150 2016/07/19 17:10:45 roberto Exp roberto $
|
||||
263c263,264
|
||||
< for (option = LUA_STRFTIMEOPTIONS; *option != '\0'; option += oplen) {
|
||||
---
|
||||
@ -3688,6 +3692,28 @@ patch = [[
|
||||
}
|
||||
|
||||
|
||||
Bug{
|
||||
what = [[When a coroutine tries to resume a non-suspended coroutine,
|
||||
it can do some mess (and break C assertions) before detecting the error]],
|
||||
report = [[Marco Schöpl, 2016/07/20]],
|
||||
since = [[ ]],
|
||||
fix = nil,
|
||||
example = [[
|
||||
-- with C assertions on
|
||||
A = coroutine.running()
|
||||
B = coroutine.create(function() coroutine.resume(A) end)
|
||||
coroutine.resume(B)
|
||||
|
||||
-- or
|
||||
A = coroutine.wrap(function() pcall(A, _) end)
|
||||
A()
|
||||
]],
|
||||
patch = [[
|
||||
]]
|
||||
}
|
||||
]=]
|
||||
|
||||
|
||||
--[=[
|
||||
Bug{
|
||||
what = [[ ]],
|
||||
|
Loading…
Reference in New Issue
Block a user