neovim/neovim — pull request #1736 by fwalch (2014-12-25 11:31:16+00:00)
Title: [RFC] vim-patch:7.4.528

```
Problem: Crash when using matchadd() (Yasuhiro Matsumoto)
Solution: Copy the match regprog.

https://code.google.com/p/vim/source/detail?r=v7-4-528
```

Original patch:
```diff
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -7588,6 +7588,12 @@ next_search_hl(win, shl, lnum, mincol, c
shl->lnum = lnum;
if (shl->rm.regprog != NULL)
{
+	/* Remember whether shl->rm is using a copy of the regprog in
+	* cur->match. */
+	int regprog_is_copy = (shl != &search_hl && cur != NULL
+	&& shl == &cur->hl
+	&& cur->match.regprog == cur->hl.rm.regprog);
+
nmatched = vim_regexec_multi(&shl->rm, win, shl->buf, lnum,
matchcol,
#ifdef FEAT_RELTIME
@@ -7596,6 +7602,10 @@ next_search_hl(win, shl, lnum, mincol, c
NULL
#endif
);
+	/* Copy the regprog, in case it got freed and recompiled. */
+	if (regprog_is_copy)
+	cur->match.regprog = cur->hl.rm.regprog;
+
if (called_emsg || got_int)
{
/* Error while handling regexp: stop using this regexp. */
diff --git a/src/nvim/version.c b/src/nvim/version.c
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 528,
+/**/
527,
/**/
526,
```