Переглянути джерело

bug: When a coroutine tries to resume a non-suspended coroutine,
it can do some mess (and break C assertions) before detecting the error.

Roberto Ierusalimschy 8 роки тому
батько
коміт
697593d8d5
1 змінених файлів з 28 додано та 2 видалено
  1. 28 2
      bugs

+ 28 - 2
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 = [[ ]],