mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-08-01 20:52:03 -07:00
Fix a non-termination bug.
This was a very silly bug. Instead of creating a particular atomic once and cloning it, we created a new value for each worker. Fixes #279
This commit is contained in:
@@ -767,12 +767,13 @@ impl WalkParallel {
|
||||
// Create the workers and then wait for them to finish.
|
||||
let num_waiting = Arc::new(AtomicUsize::new(0));
|
||||
let num_quitting = Arc::new(AtomicUsize::new(0));
|
||||
let quit_now = Arc::new(AtomicBool::new(false));
|
||||
let mut handles = vec![];
|
||||
for _ in 0..threads {
|
||||
let worker = Worker {
|
||||
f: mkf(),
|
||||
queue: queue.clone(),
|
||||
quit_now: Arc::new(AtomicBool::new(false)),
|
||||
quit_now: quit_now.clone(),
|
||||
is_waiting: false,
|
||||
is_quitting: false,
|
||||
num_waiting: num_waiting.clone(),
|
||||
|
@@ -968,6 +968,15 @@ clean!(regression_256_j1, "test", "foo", |wd: WorkDir, mut cmd: Command| {
|
||||
assert_eq!(lines, "foo/baz:test\n");
|
||||
});
|
||||
|
||||
// See: https://github.com/BurntSushi/ripgrep/issues/279
|
||||
clean!(regression_279, "test", ".", |wd: WorkDir, mut cmd: Command| {
|
||||
wd.create("foo", "test");
|
||||
cmd.arg("-q");
|
||||
|
||||
let lines: String = wd.stdout(&mut cmd);
|
||||
assert_eq!(lines, "");
|
||||
});
|
||||
|
||||
// See: https://github.com/BurntSushi/ripgrep/issues/7
|
||||
sherlock!(feature_7, "-fpat", "sherlock", |wd: WorkDir, mut cmd: Command| {
|
||||
wd.create("pat", "Sherlock\nHolmes");
|
||||
|
Reference in New Issue
Block a user