From 939c9165dcd64abb4562043c227925836325182d Mon Sep 17 00:00:00 2001 From: Michael Aaron Murphy <mmstickman@gmail.com> Date: Fri, 6 Oct 2017 16:51:45 -0400 Subject: [PATCH] Fix for #543 Closes #543 --- Cargo.toml | 2 +- examples/glob.ion | 2 ++ examples/glob.out | 6 ++++-- src/parser/shell_expand/words.rs | 6 +++--- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index bab87d8d..85c63b5a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -72,5 +72,5 @@ version_check = "0.1.3" [profile.release] # debug = true # rustflags = [ "-C", "target-cpu=native"] -lto = true +# lto = true panic = "abort" diff --git a/examples/glob.ion b/examples/glob.ion index ff060ea4..24f8c1cd 100644 --- a/examples/glob.ion +++ b/examples/glob.ion @@ -6,6 +6,8 @@ echo Cargo.* echo Cargo?toml echo Cargo.[tqr]oml echo examples/[ef]*.ion +echo "[]" +echo "[] []" mkdir glob_test touch glob_test/{one,two,three} cd glob_test diff --git a/examples/glob.out b/examples/glob.out index 17ff9ff8..75cbc78f 100644 --- a/examples/glob.out +++ b/examples/glob.out @@ -1,11 +1,13 @@ Cargo.toml examples/braces.ion examples/braces.out examples/break.ion examples/break.out -Cargo.toml +Cargo.toml l Cargo.toml Cargo.lock Cargo.toml Cargo.toml Cargo.toml examples/else_if.ion examples/exists.ion examples/fail.ion examples/fibonacci.ion examples/fn.ion examples/for.ion examples/function_piping.ion +[] +[] [] one three two three two -three two +three two one three two diff --git a/src/parser/shell_expand/words.rs b/src/parser/shell_expand/words.rs index 8670a5be..75ce36ff 100644 --- a/src/parser/shell_expand/words.rs +++ b/src/parser/shell_expand/words.rs @@ -1179,7 +1179,7 @@ impl<'a, E: Expander + 'a> WordIterator<'a, E> { for _ in 0..moves { iterator.next(); } - self.read += moves + 1; + self.read += moves; true } else { self.read += 1; @@ -1278,7 +1278,7 @@ impl<'a, E: Expander + 'a> Iterator for WordIterator<'a, E> { self.read += 1; return Some(self.braces(&mut iterator)); } - b'[' if !self.flags.contains(SQUOTE) => if self.glob_check(&mut iterator) { + b'[' if !self.flags.contains(SQUOTE | DQUOTE) => if self.glob_check(&mut iterator) { glob = true; } else { return Some(self.array(&mut iterator)); @@ -1398,7 +1398,7 @@ impl<'a, E: Expander + 'a> Iterator for WordIterator<'a, E> { return self.next(); }; } - b'[' if !self.flags.contains(SQUOTE) => if self.glob_check(&mut iterator) { + b'[' if !self.flags.contains(SQUOTE | DQUOTE) => if self.glob_check(&mut iterator) { glob = true; } else { return Some(WordToken::Normal(&self.data[start..self.read], glob, tilde)); -- GitLab