grep: don't go in an infinite loop when given empty regex
Differential Revision: https://phab.mercurial-scm.org/D8543
--- a/mercurial/commands.py Sun May 17 12:49:12 2020 -0400
+++ b/mercurial/commands.py Sun May 17 12:52:43 2020 -0400
@@ -3428,8 +3428,11 @@
m = regexp.search(self.line, p)
if not m:
break
- yield m.span()
- p = m.end()
+ if m.end() == p:
+ p += 1
+ else:
+ yield m.span()
+ p = m.end()
matches = {}
copies = {}
--- a/tests/test-grep.t Sun May 17 12:49:12 2020 -0400
+++ b/tests/test-grep.t Sun May 17 12:52:43 2020 -0400
@@ -660,7 +660,7 @@
$ echo 'added, missing' > added-missing; hg add added-missing; rm added-missing
$ echo 'untracked' > untracked
$ hg rm old
- $ hg grep '[^Z]'
+ $ hg grep ''
added:added
new:something else
new:modified