summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Src/Modules/pcre.c2
-rw-r--r--Test/V07pcre.ztst9
3 files changed, 15 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index c1395f31c..18fde9344 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2014-09-07 Barton E. Schaefer <schaefer@zsh.org>
+
+ * 33122: Src/Modules/pcre.c, Test/V07pcre.ztst: typo from 32891
+ caused incorrect matches for pcre_match -n
+
2014-09-06 Barton E. Schaefer <schaefer@zsh.org>
* 33118: Src/subst.c: record original param unset state when
diff --git a/Src/Modules/pcre.c b/Src/Modules/pcre.c
index 040a33f8e..2393cd1e7 100644
--- a/Src/Modules/pcre.c
+++ b/Src/Modules/pcre.c
@@ -289,7 +289,7 @@ bin_pcre_match(char *nam, char **args, Options ops, UNUSED(int func))
matched_portion = OPT_ARG(ops,c);
}
if(OPT_HASARG(ops,c='n')) { /* The offset position to start the search, in bytes. */
- if ((offset_start = getposint(OPT_ARG(ops,c), nam) < 0))
+ if ((offset_start = getposint(OPT_ARG(ops,c), nam)) < 0)
return 1;
}
/* For the entire match, 'Return' the offset byte positions instead of the matched string */
diff --git a/Test/V07pcre.ztst b/Test/V07pcre.ztst
index f5b05deaa..3a65331b3 100644
--- a/Test/V07pcre.ztst
+++ b/Test/V07pcre.ztst
@@ -108,3 +108,12 @@
>1
>0 xo→t →t
>0 Xo→t →t
+
+ string="The following zip codes: 78884 90210 99513"
+ pcre_compile -m "\d{5}"
+ pcre_match -b -- $string && print "$MATCH; ZPCRE_OP: $ZPCRE_OP"
+ pcre_match -b -n $ZPCRE_OP[(w)2] -- $string || print failed
+ print "$MATCH; ZPCRE_OP: $ZPCRE_OP"
+0:pcre_match -b and pcre_match -n
+>78884; ZPCRE_OP: 25 30
+>90210; ZPCRE_OP: 31 36