mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2024-11-26 04:31:34 +08:00
Fix PostEvent() segfault (#403)
Fix segfault when PostEvent() called on inactive screen. Co-authored-by: ArthurSonzogni <sonzogniarthur@gmail.com>
This commit is contained in:
parent
c033ca61ae
commit
f9256fa132
@ -295,10 +295,14 @@ ScreenInteractive ScreenInteractive::FitComponent() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScreenInteractive::Post(Task task) {
|
void ScreenInteractive::Post(Task task) {
|
||||||
if (!quit_) {
|
// Task/Events sent toward inactive screen or screen waiting to become
|
||||||
|
// inactive are dropped.
|
||||||
|
if (!task_sender_)
|
||||||
|
return;
|
||||||
|
|
||||||
task_sender_->Send(std::move(task));
|
task_sender_->Send(std::move(task));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenInteractive::PostEvent(Event event) {
|
void ScreenInteractive::PostEvent(Event event) {
|
||||||
Post(event);
|
Post(event);
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,20 @@ TEST(ScreenInteractive, Signal_SIGFPE) {
|
|||||||
TestSignal(SIGFPE);
|
TestSignal(SIGFPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Regression test for:
|
||||||
|
// https://github.com/ArthurSonzogni/FTXUI/issues/402
|
||||||
|
TEST(ScreenInteractive, PostEventToNonActive) {
|
||||||
|
auto screen = ScreenInteractive::FitComponent();
|
||||||
|
screen.Post(Event::Custom);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Regression test for:
|
||||||
|
// https://github.com/ArthurSonzogni/FTXUI/issues/402
|
||||||
|
TEST(ScreenInteractive, PostTaskToNonActive) {
|
||||||
|
auto screen = ScreenInteractive::FitComponent();
|
||||||
|
screen.Post([] {});
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ftxui
|
} // namespace ftxui
|
||||||
|
|
||||||
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
// Copyright 2021 Arthur Sonzogni. All rights reserved.
|
||||||
|
Loading…
Reference in New Issue
Block a user