Date: Tuesday, March 21, 2017 @ 09:43:20
  Author: bpiotrowski
Revision: 291144

upgpkg: zsh 5.3.1-2

backport patch that fixes history-incremental-pattern-search-backward

Added:
  zsh/trunk/40285.patch
Modified:
  zsh/trunk/PKGBUILD

-------------+
 40285.patch |   66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 PKGBUILD    |    9 +++++--
 2 files changed, 72 insertions(+), 3 deletions(-)

Added: 40285.patch
===================================================================
--- 40285.patch                         (rev 0)
+++ 40285.patch 2017-03-21 09:43:20 UTC (rev 291144)
@@ -0,0 +1,66 @@
+From 48cadf48ff9c61ce09e826ad9a58e250e999a262 Mon Sep 17 00:00:00 2001
+From: Peter Stephenson <[email protected]>
+Date: Fri, 6 Jan 2017 17:42:13 +0000
+Subject: [PATCH] 40285: Be more careful with pattern allocation in history
+ isearch.
+
+If there are ZLE hooks to be called, they may use patterns, in
+which case it's not safe to allocate the isearch pattern in the
+static buffer.
+---
+ Src/Zle/zle_hist.c | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/Src/Zle/zle_hist.c b/Src/Zle/zle_hist.c
+index abd6e17..434735d 100644
+--- a/Src/Zle/zle_hist.c
++++ b/Src/Zle/zle_hist.c
+@@ -1220,13 +1220,12 @@ doisearch(char **args, int dir, int pattern)
+               char *patbuf = ztrdup(sbuf);
+               char *patstring;
+               /*
+-               * Use static pattern buffer since we don't need
+-               * to maintain it and won't call other pattern functions
+-               * meanwhile.
++               * Do not use static pattern buffer (PAT_STATIC) since we call 
zle hooks,
++               * which might call other pattern functions. Use PAT_ZDUP 
instead.
+                * Use PAT_NOANCH because we don't need the match
+                * anchored to the end, even if it is at the start.
+                */
+-              int patflags = PAT_STATIC|PAT_NOANCH;
++              int patflags = PAT_ZDUP|PAT_NOANCH;
+               if (sbuf[0] == '^') {
+                   /*
+                    * We'll handle the anchor later when
+@@ -1521,6 +1520,7 @@ doisearch(char **args, int dir, int pattern)
+                   if (only_one || !top_spot || old_sbptr != sbptr)
+                       break;
+               }
++              freepatprog(patprog);
+               patprog = NULL;
+               nosearch = 1;
+               skip_pos = 0;
+@@ -1632,6 +1632,7 @@ doisearch(char **args, int dir, int pattern)
+           }
+           strcpy(sbuf + sbptr, paste);
+           sbptr += pastelen;
++          freepatprog(patprog);
+           patprog = NULL;
+           free(paste);
+       } else if (cmd == Th(z_acceptsearch)) {
+@@ -1682,6 +1683,7 @@ doisearch(char **args, int dir, int pattern)
+            * always valid at this point.
+            */
+           sbptr += zlecharasstring(LASTFULLCHAR, sbuf + sbptr);
++          freepatprog(patprog);
+           patprog = NULL;
+       }
+       if (feep)
+@@ -1702,6 +1704,7 @@ doisearch(char **args, int dir, int pattern)
+     zsfree(okeymap);
+     if (matchlist)
+       freematchlist(matchlist);
++    freepatprog(patprog);
+     isearch_active = 0;
+     /*
+      * Don't allow unused characters provided as a string to the

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2017-03-21 07:49:31 UTC (rev 291143)
+++ PKGBUILD    2017-03-21 09:43:20 UTC (rev 291144)
@@ -4,22 +4,25 @@
 pkgbase=zsh
 pkgname=('zsh' 'zsh-doc')
 pkgver=5.3.1
-pkgrel=1
+pkgrel=2
 arch=('i686' 'x86_64')
 url='http://www.zsh.org/'
 license=('custom')
 makedepends=('pcre' 'libcap' 'gdbm')
 source=("https://www.zsh.org/pub/zsh-${pkgver}"{,-doc}".tar.xz"{,.asc}
-        'zprofile')
+        'zprofile'
+       '40285.patch')
 md5sums=('67d3e5ed99de68340c16aef613b0ecf7'
          'SKIP'
          '6b908409528e77e00a26b7283f1f425d'
          'SKIP'
-         '24a9335edf77252a7b5f52e079f7aef7')
+         '24a9335edf77252a7b5f52e079f7aef7'
+         'fed5d393aa5b6ea51e873fa0605796ac')
 validpgpkeys=('F7B2754C7DE2830914661F0EA71D9A9D4BDB27B3')
 
 prepare() {
        cd "${srcdir}/${pkgbase}-${pkgver}"
+       patch -p1 -i "${srcdir}/40285.patch"
 
        # Set correct keymap path
        sed -i 's#/usr/share/keymaps#/usr/share/kbd/keymaps#g' 
Completion/Unix/Command/_loadkeys

Reply via email to