Fix interactive --on-signal INT handlers

f8ba0ac5bf introduced a bug where INT handlers would themselves be
cancelled, due to the signal. Defer processing handlers until the
parser is ready to execute more fish script.

Fixes the interactive case of #6649.
This commit is contained in:
ridiculousfish
2020-03-01 13:27:34 -08:00
parent bfc1de9ef4
commit bc702ccb31
3 changed files with 13 additions and 2 deletions

View File

@@ -288,6 +288,8 @@ void event_fire_delayed(parser_t &parser) {
auto &ld = parser.libdata();
// Do not invoke new event handlers from within event handlers.
if (ld.is_event) return;
// Do not invoke new event handlers if we are unwinding (#6649).
if (parser.get_cancel_signal()) return;
std::vector<shared_ptr<event_t>> to_send;
to_send.swap(ld.blocked_events);