From 60debf388f65849fc31b92982274cc984da74052 Mon Sep 17 00:00:00 2001
From: Peter Stephenson
Date: Mon, 23 Sep 2013 21:02:31 +0100
Subject: 31764: Dewreakify havoc caused by pattern disables on glob
qualifiers. Don't use the zpc_specials array before it's defined, it's rude.
---
ChangeLog | 6 ++++++
Src/glob.c | 9 +++++----
Src/pattern.c | 3 ++-
3 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 3220b6291..88dad0284 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-09-23 Peter Stephenson
+
+ * 31764 (with correction of sense of a test): Src/glob.c,
+ Src/pattern.c: use of array before initialisation wreaked havoc
+ in detecting glob qualifiers.
+
2013-09-22 m0viefreak
* 31754: Completion/Unix/Command/_git: _git: git rm: make git rm
diff --git a/Src/glob.c b/Src/glob.c
index 9299b95ea..e0d0cf68e 100644
--- a/Src/glob.c
+++ b/Src/glob.c
@@ -1112,7 +1112,8 @@ zglob(LinkList list, LinkNode np, int nountok)
gf_pre_words = NULL;
/* Check for qualifiers */
- while (!nobareglob || zpc_special[ZPC_HASH] != Marker) {
+ while (!nobareglob ||
+ (isset(EXTENDEDGLOB) && !zpc_disables[ZPC_HASH])) {
struct qual *newquals;
char *s;
int sense, paren;
@@ -1158,11 +1159,11 @@ zglob(LinkList list, LinkNode np, int nountok)
case Outpar:
paren++; /*FALLTHROUGH*/
case Bar:
- if (zpc_special[ZPC_BAR] != Marker)
+ if (!zpc_disables[ZPC_BAR])
nobareglob = 1;
break;
case Tilde:
- if (zpc_special[ZPC_TILDE] != Marker)
+ if (isset(EXTENDEDGLOB) && !zpc_disables[ZPC_TILDE])
nobareglob = 1;
break;
case Inpar:
@@ -1172,7 +1173,7 @@ zglob(LinkList list, LinkNode np, int nountok)
}
if (*s != Inpar)
break;
- if (s[1] == zpc_special[ZPC_HASH]) {
+ if (isset(EXTENDEDGLOB) && !zpc_disables[ZPC_HASH] && s[1] == Pound) {
if (s[2] == 'q') {
*s = 0;
s += 2;
diff --git a/Src/pattern.c b/Src/pattern.c
index b7897e75c..4f0166bfa 100644
--- a/Src/pattern.c
+++ b/Src/pattern.c
@@ -245,7 +245,8 @@ static const char *zpc_strings[ZPC_COUNT] = {
* Corresponding array of pattern disables as set by the user
* using "disable -p".
*/
-static char zpc_disables[ZPC_COUNT];
+/**/
+char zpc_disables[ZPC_COUNT];
/*
* Stack of saved (compressed) zpc_disables for function scope.
--
cgit 1.4.1