diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2016-10-19 10:34:27 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2016-10-19 10:34:27 -0200 |
| commit | 697593d8d5b2e2287919423006c53dcac31d2b70 (patch) | |
| tree | 0bf2588acdced47a573fc586f73f967174f36dcf /bugs | |
| parent | e2dc807c6e93dc8819d065ae8e3808c720928bbd (diff) | |
| download | lua-697593d8d5b2e2287919423006c53dcac31d2b70.tar.gz lua-697593d8d5b2e2287919423006c53dcac31d2b70.tar.bz2 lua-697593d8d5b2e2287919423006c53dcac31d2b70.zip | |
bug: When a coroutine tries to resume a non-suspended coroutine,
it can do some mess (and break C assertions) before detecting the error.
Diffstat (limited to 'bugs')
| -rw-r--r-- | bugs | 30 |
1 files changed, 28 insertions, 2 deletions
| @@ -3602,6 +3602,10 @@ patch = [[ | |||
| 3602 | } | 3602 | } |
| 3603 | 3603 | ||
| 3604 | 3604 | ||
| 3605 | ----------------------------------------------------------------- | ||
| 3606 | -- Lua 5.3.3 | ||
| 3607 | |||
| 3608 | |||
| 3605 | Bug{ | 3609 | Bug{ |
| 3606 | what = [[expression list with four or more expressions in | 3610 | what = [[expression list with four or more expressions in |
| 3607 | a 'for' loop can crash the interpreter]], | 3611 | a 'for' loop can crash the interpreter]], |
| @@ -3652,9 +3656,9 @@ It needs an "interceptor" 'memcmp' function that continues | |||
| 3652 | reading memory after a difference is found.]], | 3656 | reading memory after a difference is found.]], |
| 3653 | patch = [[ | 3657 | patch = [[ |
| 3654 | 2c2 | 3658 | 2c2 |
| 3655 | < ** $Id: bugs,v 1.149 2016/07/15 17:24:09 roberto Exp roberto $ | 3659 | < ** $Id: bugs,v 1.150 2016/07/19 17:10:45 roberto Exp roberto $ |
| 3656 | --- | 3660 | --- |
| 3657 | > ** $Id: bugs,v 1.149 2016/07/15 17:24:09 roberto Exp roberto $ | 3661 | > ** $Id: bugs,v 1.150 2016/07/19 17:10:45 roberto Exp roberto $ |
| 3658 | 263c263,264 | 3662 | 263c263,264 |
| 3659 | < for (option = LUA_STRFTIMEOPTIONS; *option != '\0'; option += oplen) { | 3663 | < for (option = LUA_STRFTIMEOPTIONS; *option != '\0'; option += oplen) { |
| 3660 | --- | 3664 | --- |
| @@ -3688,6 +3692,28 @@ patch = [[ | |||
| 3688 | } | 3692 | } |
| 3689 | 3693 | ||
| 3690 | 3694 | ||
| 3695 | Bug{ | ||
| 3696 | what = [[When a coroutine tries to resume a non-suspended coroutine, | ||
| 3697 | it can do some mess (and break C assertions) before detecting the error]], | ||
| 3698 | report = [[Marco Schöpl, 2016/07/20]], | ||
| 3699 | since = [[ ]], | ||
| 3700 | fix = nil, | ||
| 3701 | example = [[ | ||
| 3702 | -- with C assertions on | ||
| 3703 | A = coroutine.running() | ||
| 3704 | B = coroutine.create(function() coroutine.resume(A) end) | ||
| 3705 | coroutine.resume(B) | ||
| 3706 | |||
| 3707 | -- or | ||
| 3708 | A = coroutine.wrap(function() pcall(A, _) end) | ||
| 3709 | A() | ||
| 3710 | ]], | ||
| 3711 | patch = [[ | ||
| 3712 | ]] | ||
| 3713 | } | ||
| 3714 | ]=] | ||
| 3715 | |||
| 3716 | |||
| 3691 | --[=[ | 3717 | --[=[ |
| 3692 | Bug{ | 3718 | Bug{ |
| 3693 | what = [[ ]], | 3719 | what = [[ ]], |
