… | |
… | |
1081 | |
1081 | |
1082 | if (coro->mainstack && coro->mainstack != main_mainstack) |
1082 | if (coro->mainstack && coro->mainstack != main_mainstack) |
1083 | { |
1083 | { |
1084 | struct coro temp; |
1084 | struct coro temp; |
1085 | |
1085 | |
1086 | assert (!(coro->flags & CF_RUNNING)); |
1086 | if (coro->flags & CF_RUNNING) |
|
|
1087 | croak ("FATAL: tried to destroy currently running coroutine"); |
1087 | |
1088 | |
1088 | Zero (&temp, 1, struct coro); |
1089 | Zero (&temp, 1, struct coro); |
1089 | temp.save = CORO_SAVE_ALL; |
1090 | temp.save = CORO_SAVE_ALL; |
1090 | |
|
|
1091 | if (coro->flags & CF_RUNNING) |
|
|
1092 | croak ("FATAL: tried to destroy currently running coroutine"); |
|
|
1093 | |
1091 | |
1094 | save_perl (aTHX_ &temp); |
1092 | save_perl (aTHX_ &temp); |
1095 | load_perl (aTHX_ coro); |
1093 | load_perl (aTHX_ coro); |
1096 | |
1094 | |
1097 | coro_destroy_stacks (aTHX); |
1095 | coro_destroy_stacks (aTHX); |