summaryrefslogtreecommitdiff
path: root/Src/glob.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/glob.c')
-rw-r--r--Src/glob.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/Src/glob.c b/Src/glob.c
index 623e6f1d6..ff6b2583b 100644
--- a/Src/glob.c
+++ b/Src/glob.c
@@ -2462,13 +2462,20 @@ xpandbraces(LinkList list, LinkNode *np)
int
matchpat(char *a, char *b)
{
- Patprog p = patcompile(b, PAT_STATIC, NULL);
+ Patprog p;
+ int ret;
- if (!p) {
+ queue_signals(); /* Protect PAT_STATIC */
+
+ if (!(p = patcompile(b, PAT_STATIC, NULL))) {
zerr("bad pattern: %s", b);
- return 0;
- }
- return pattry(p, a);
+ ret = 0;
+ } else
+ ret = pattry(p, a);
+
+ unqueue_signals();
+
+ return ret;
}
/* do the ${foo%%bar}, ${foo#bar} stuff */