summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Pennock <zsh-workers+phil.pennock@spodhuis.org>2017-08-10 22:02:46 -0400
committerPeter Stephenson <pws@zsh.org>2017-08-11 15:02:06 +0100
commitb5f40f415668be88f451dbce956597e77f1bc056 (patch)
tree350018db66f2bbcab67bd496dd938d0b19018ad3
parent0f8cf76ecea79c2aea14b649164a6a38b249ded0 (diff)
downloadzsh-b5f40f415668be88f451dbce956597e77f1bc056.tar.gz
zsh-b5f40f415668be88f451dbce956597e77f1bc056.zip
41527 (tweaked for heap memory): fix [[ -<cond> ]] from modules
-rw-r--r--ChangeLog5
-rw-r--r--Src/module.c15
-rw-r--r--Test/V07pcre.ztst9
3 files changed, 27 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 9cf17923e..026fe3796 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-08-11 Peter Stephenson <p.stephenson@samsung.com>
+
+ * Phil: 41527 (tweak to use heap memory): Src/module.c,
+ Test/V07pcre.ztst: fix [[ ... ]]] conditions passed to modules.
+
2017-08-09 Peter Stephenson <p.w.stephenson@ntlworld.com>
* unposted: README: 5.4,1 typo fixed.
diff --git a/Src/module.c b/Src/module.c
index 21d68b1ac..4ae78310f 100644
--- a/Src/module.c
+++ b/Src/module.c
@@ -649,11 +649,21 @@ getconddef(int inf, const char *name, int autol)
{
Conddef p;
int f = 1;
+ char *lookup, *s;
+
+ /* detokenize the Dash to the form encoded in lookup tables */
+ lookup = dupstring(name);
+ if (!lookup)
+ return NULL;
+ for (s = lookup; *s != '\0'; s++) {
+ if (*s == Dash)
+ *s = '-';
+ }
do {
for (p = condtab; p; p = p->next) {
if ((!!inf == !!(p->flags & CONDF_INFIX)) &&
- !strcmp(name, p->name))
+ !strcmp(lookup, p->name))
break;
}
if (autol && p && p->module) {
@@ -664,7 +674,7 @@ getconddef(int inf, const char *name, int autol)
if (f) {
(void)ensurefeature(p->module,
(p->flags & CONDF_INFIX) ? "C:" : "c:",
- (p->flags & CONDF_AUTOALL) ? NULL : name);
+ (p->flags & CONDF_AUTOALL) ? NULL : lookup);
f = 0;
p = NULL;
} else {
@@ -674,6 +684,7 @@ getconddef(int inf, const char *name, int autol)
} else
break;
} while (!p);
+
return p;
}
diff --git a/Test/V07pcre.ztst b/Test/V07pcre.ztst
index 7426e7bf8..ab41d33dc 100644
--- a/Test/V07pcre.ztst
+++ b/Test/V07pcre.ztst
@@ -137,6 +137,15 @@
0:ensure ASCII NUL passes in and out of matched plaintext
>6; 3; 3
+# Ensure the long-form infix operator works
+ [[ foo -pcre-match ^f..$ ]]
+ print $?
+ [[ foo -pcre-match ^g..$ ]]
+ print $?
+0:infix -pcre-match works
+>0
+>1
+
# Subshell because crash on failure
( setopt re_match_pcre
[[ test.txt =~ '^(.*_)?(test)' ]]