diff --git a/examples/glob.out b/examples/glob.out
index 75cbc78f9be5d56150d6db9ca8c6f8c95277b29c..781affcad9a0a118338d3825802da63596bb0e63 100644
--- a/examples/glob.out
+++ b/examples/glob.out
@@ -1,6 +1,6 @@
 Cargo.toml
 examples/braces.ion examples/braces.out examples/break.ion examples/break.out
-Cargo.toml l
+Cargo.toml
 Cargo.toml
 Cargo.lock Cargo.toml
 Cargo.toml
@@ -10,4 +10,4 @@ examples/else_if.ion examples/exists.ion examples/fail.ion examples/fibonacci.io
 [] []
 one three two
 three two
-three two one three two
+three two
diff --git a/src/parser/shell_expand/words.rs b/src/parser/shell_expand/words.rs
index 75ce36ff2e2394f27171b9a7ecfd2abde16de0ab..f9b254d2d90de02d8d1ee45b0d6765b54b04a893 100644
--- a/src/parser/shell_expand/words.rs
+++ b/src/parser/shell_expand/words.rs
@@ -1,4 +1,3 @@
-
 use super::{expand_string, Expander};
 use super::{is_expression, slice};
 use super::ranges::parse_index_range;
@@ -1179,7 +1178,7 @@ impl<'a, E: Expander + 'a> WordIterator<'a, E> {
             for _ in 0..moves {
                 iterator.next();
             }
-            self.read += moves;
+            self.read += moves + 1;
             true
         } else {
             self.read += 1;
@@ -1278,7 +1277,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 | DQUOTE) => if self.glob_check(&mut iterator) {
+                    b'[' if !self.flags.intersects(SQUOTE | DQUOTE) => if self.glob_check(&mut iterator) {
                         glob = true;
                     } else {
                         return Some(self.array(&mut iterator));
@@ -1398,7 +1397,7 @@ impl<'a, E: Expander + 'a> Iterator for WordIterator<'a, E> {
                         return self.next();
                     };
                 }
-                b'[' if !self.flags.contains(SQUOTE | DQUOTE) => if self.glob_check(&mut iterator) {
+                b'[' if !self.flags.intersects(SQUOTE | DQUOTE) => if self.glob_check(&mut iterator) {
                     glob = true;
                 } else {
                     return Some(WordToken::Normal(&self.data[start..self.read], glob, tilde));