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:
Roberto Ierusalimschy 2016-10-19 10:34:27 -02:00
parent e2dc807c6e
commit 697593d8d5

30
bugs
View File

@ -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 = [[ ]],