mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-27 05:13:10 +00:00
Fix to avoid calling signal_block off of hte main thread
This commit is contained in:
parent
ca1c8243c8
commit
d8a9991738
6 changed files with 15 additions and 5 deletions
|
@ -50,6 +50,7 @@
|
||||||
#include "event.h"
|
#include "event.h"
|
||||||
#include "path.h"
|
#include "path.h"
|
||||||
#include "history.h"
|
#include "history.h"
|
||||||
|
#include "highlight.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The number of tests to run
|
The number of tests to run
|
||||||
|
@ -552,6 +553,11 @@ static void test_colors()
|
||||||
assert(rgb_color_t(L"mooganta").is_none());
|
assert(rgb_color_t(L"mooganta").is_none());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Testing autosuggestion */
|
||||||
|
static void test_autosuggest() {
|
||||||
|
bool autosuggest_handle_special(const wcstring &str, const wcstring &working_directory, bool *outSuggestionOK);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Test speed of completion calculations
|
Test speed of completion calculations
|
||||||
|
@ -734,6 +740,7 @@ int main( int argc, char **argv )
|
||||||
test_expand();
|
test_expand();
|
||||||
test_path();
|
test_path();
|
||||||
test_colors();
|
test_colors();
|
||||||
|
test_autosuggest();
|
||||||
history_tests_t::test_history();
|
history_tests_t::test_history();
|
||||||
|
|
||||||
say( L"Encountered %d errors in low-level tests", err_count );
|
say( L"Encountered %d errors in low-level tests", err_count );
|
||||||
|
|
|
@ -528,7 +528,7 @@ static int has_expand_reserved( const wchar_t *str )
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool autosuggest_handle_special(const wcstring &str, const env_vars &vars, const wcstring &working_directory, bool *outSuggestionOK) {
|
bool autosuggest_handle_special(const wcstring &str, const wcstring &working_directory, bool *outSuggestionOK) {
|
||||||
ASSERT_IS_BACKGROUND_THREAD();
|
ASSERT_IS_BACKGROUND_THREAD();
|
||||||
assert(outSuggestionOK != NULL);
|
assert(outSuggestionOK != NULL);
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,7 @@ void highlight_universal( const wchar_t *buff, int *color, int pos, wcstring_lis
|
||||||
*/
|
*/
|
||||||
rgb_color_t highlight_get_color( int highlight, bool is_background );
|
rgb_color_t highlight_get_color( int highlight, bool is_background );
|
||||||
|
|
||||||
bool autosuggest_handle_special(const wcstring &str, const env_vars &vars, const wcstring &working_directory, bool *outSuggestionOK);
|
bool autosuggest_handle_special(const wcstring &str, const wcstring &working_directory, bool *outSuggestionOK);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -404,7 +404,8 @@ void history_t::load_old_if_needed(void)
|
||||||
int fd;
|
int fd;
|
||||||
int ok=0;
|
int ok=0;
|
||||||
|
|
||||||
signal_block();
|
// PCA not sure why signals were blocked here
|
||||||
|
//signal_block();
|
||||||
wcstring filename = history_filename(name, L"");
|
wcstring filename = history_filename(name, L"");
|
||||||
|
|
||||||
if( ! filename.empty() )
|
if( ! filename.empty() )
|
||||||
|
@ -427,7 +428,7 @@ void history_t::load_old_if_needed(void)
|
||||||
close( fd );
|
close( fd );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
signal_unblock();
|
//signal_unblock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void history_search_t::skip_matches(const wcstring_list_t &skips) {
|
void history_search_t::skip_matches(const wcstring_list_t &skips) {
|
||||||
|
|
|
@ -1287,7 +1287,7 @@ struct autosuggestion_context_t {
|
||||||
while (searcher.go_backwards()) {
|
while (searcher.go_backwards()) {
|
||||||
history_item_t item = searcher.current_item();
|
history_item_t item = searcher.current_item();
|
||||||
bool item_ok = false;
|
bool item_ok = false;
|
||||||
if (autosuggest_handle_special(item.str(), vars, working_directory, &item_ok)) {
|
if (autosuggest_handle_special(item.str(), working_directory, &item_ok)) {
|
||||||
/* The command autosuggestion was handled specially, so we're done */
|
/* The command autosuggestion was handled specially, so we're done */
|
||||||
} else {
|
} else {
|
||||||
/* See if the item has any required paths */
|
/* See if the item has any required paths */
|
||||||
|
|
|
@ -633,6 +633,7 @@ void signal_handle( int sig, int do_handle )
|
||||||
|
|
||||||
void signal_block()
|
void signal_block()
|
||||||
{
|
{
|
||||||
|
ASSERT_IS_MAIN_THREAD();
|
||||||
sigset_t chldset;
|
sigset_t chldset;
|
||||||
|
|
||||||
if( !block_count )
|
if( !block_count )
|
||||||
|
@ -647,6 +648,7 @@ void signal_block()
|
||||||
|
|
||||||
void signal_unblock()
|
void signal_unblock()
|
||||||
{
|
{
|
||||||
|
ASSERT_IS_MAIN_THREAD();
|
||||||
sigset_t chldset;
|
sigset_t chldset;
|
||||||
|
|
||||||
block_count--;
|
block_count--;
|
||||||
|
|
Loading…
Reference in a new issue