From 3a7ab3f030eda29ecbe54c0f44732e471300a3ed Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Sat, 6 Apr 2013 00:28:55 -0700 Subject: [PATCH] Teaching history how to exit early on thread cancellation --- history.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/history.cpp b/history.cpp index 873c0f628..8d8789d67 100644 --- a/history.cpp +++ b/history.cpp @@ -21,6 +21,7 @@ #include "util.h" #include "sanity.h" #include "tokenizer.h" +#include "reader.h" #include "wutil.h" #include "history.h" @@ -1010,10 +1011,17 @@ bool history_search_t::go_backwards() if (idx == max_idx) return false; + const bool main_thread = is_main_thread(); + while (++idx < max_idx) { + if (main_thread ? reader_interrupted() : reader_thread_job_is_stale()) + { + return false; + } + const history_item_t item = history->item_at_index(idx); - /* We're done if it's empty */ + /* We're done if it's empty or we cancelled */ if (item.empty()) { return false;