mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-12 21:18:53 +00:00
Make debug_level an atomic
Fixes a tsan warning
This commit is contained in:
parent
0dd9f64bd9
commit
ec45f31ad1
3 changed files with 7 additions and 4 deletions
|
@ -75,7 +75,7 @@ int omitted_newline_width;
|
|||
wchar_t obfuscation_read_char;
|
||||
bool g_profiling_active = false;
|
||||
const wchar_t *program_name;
|
||||
int debug_level = 1; // default maximum debug output level (errors and warnings)
|
||||
std::atomic<int> debug_level{1}; // default maximum debug output level (errors and warnings)
|
||||
int debug_stack_frames = 0; // default number of stack frames to show on debug() calls
|
||||
|
||||
/// Be able to restore the term's foreground process group.
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#endif
|
||||
|
||||
#include <algorithm>
|
||||
#include <atomic>
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <mutex>
|
||||
|
@ -158,9 +159,9 @@ typedef unsigned int escape_flags_t;
|
|||
|
||||
/// The verbosity level of fish. If a call to debug has a severity level higher than \c debug_level,
|
||||
/// it will not be printed.
|
||||
extern int debug_level;
|
||||
extern std::atomic<int> debug_level;
|
||||
|
||||
inline bool should_debug(int level) { return level <= debug_level; }
|
||||
inline bool should_debug(int level) { return level <= debug_level.load(std::memory_order_relaxed); }
|
||||
|
||||
#define debug(level, ...) \
|
||||
do { \
|
||||
|
|
|
@ -2426,10 +2426,12 @@ static void test_dup2s() {
|
|||
|
||||
// Invalid files should fail to open.
|
||||
// Suppress the debug() message.
|
||||
scoped_push<int> saved_debug_level(&debug_level, -1);
|
||||
int saved_debug_level = debug_level;
|
||||
debug_level = -1;
|
||||
chain.push_back(make_shared<io_file_t>(2, L"/definitely/not/a/valid/path/for/this/test", 0666));
|
||||
list = dup2_list_t::resolve_chain(chain);
|
||||
do_test(!list.has_value());
|
||||
debug_level = saved_debug_level;
|
||||
}
|
||||
|
||||
static void test_dup2s_fd_for_target_fd() {
|
||||
|
|
Loading…
Reference in a new issue