[arch-commits] Commit in zsh/trunk (40285.patch PKGBUILD)

Bartłomiej Piotrowski bpiotrowski at archlinux.org
Tue Mar 21 09:43:21 UTC 2017


    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 <pws at zsh.org>
+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



More information about the arch-commits mailing list