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.
|
// Create the workers and then wait for them to finish.
|
||||||
let num_waiting = Arc::new(AtomicUsize::new(0));
|
let num_waiting = Arc::new(AtomicUsize::new(0));
|
||||||
let num_quitting = 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![];
|
let mut handles = vec![];
|
||||||
for _ in 0..threads {
|
for _ in 0..threads {
|
||||||
let worker = Worker {
|
let worker = Worker {
|
||||||
f: mkf(),
|
f: mkf(),
|
||||||
queue: queue.clone(),
|
queue: queue.clone(),
|
||||||
quit_now: Arc::new(AtomicBool::new(false)),
|
quit_now: quit_now.clone(),
|
||||||
is_waiting: false,
|
is_waiting: false,
|
||||||
is_quitting: false,
|
is_quitting: false,
|
||||||
num_waiting: num_waiting.clone(),
|
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");
|
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
|
// See: https://github.com/BurntSushi/ripgrep/issues/7
|
||||||
sherlock!(feature_7, "-fpat", "sherlock", |wd: WorkDir, mut cmd: Command| {
|
sherlock!(feature_7, "-fpat", "sherlock", |wd: WorkDir, mut cmd: Command| {
|
||||||
wd.create("pat", "Sherlock\nHolmes");
|
wd.create("pat", "Sherlock\nHolmes");
|
||||||
|
Reference in New Issue
Block a user