diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -262,7 +262,7 @@ def globre(pat, head='^', tail='$'):
     "convert a glob pattern into a regexp"
     i, n = 0, len(pat)
     res = ''
-    group = False
+    group = 0
     def peek(): return i < n and pat[i]
     while i < n:
         c = pat[i]
@@ -292,11 +292,11 @@ def globre(pat, head='^', tail='$'):
                     stuff = '\\' + stuff
                 res = '%s[%s]' % (res, stuff)
         elif c == '{':
-            group = True
+            group += 1
             res += '(?:'
         elif c == '}' and group:
             res += ')'
-            group = False
+            group -= 1
         elif c == ',' and group:
             res += '|'
         elif c == '\\':
diff --git a/tests/test-walk b/tests/test-walk
--- a/tests/test-walk
+++ b/tests/test-walk
@@ -58,6 +58,7 @@ debugwalk .hg
 debugwalk ../.hg
 chdir ..
 debugwalk -Ibeans
+debugwalk -I '{*,{b,m}*/*}k'
 debugwalk 'glob:mammals/../beans/b*'
 debugwalk '-X*/Procyonidae' mammals
 debugwalk path:mammals
diff --git a/tests/test-walk.out b/tests/test-walk.out
--- a/tests/test-walk.out
+++ b/tests/test-walk.out
@@ -174,6 +174,11 @@ f  beans/navy      beans/navy
 f  beans/pinto     beans/pinto
 f  beans/turtle    beans/turtle
 
+hg debugwalk -I {*,{b,m}*/*}k
+f  beans/black    beans/black
+f  fenugreek      fenugreek
+f  mammals/skunk  mammals/skunk
+
 hg debugwalk glob:mammals/../beans/b*
 f  beans/black     beans/black
 f  beans/borlotti  beans/borlotti