updated for version 7.4.037
Problem:    Using "\ze" in a sub-pattern does not result in the end of the
            match to be set. (Axel Bender)
Solution:   Copy the end of match position when a recursive match was
            successful.
diff --git a/src/testdir/test64.in b/src/testdir/test64.in
index ef04ba2..2df9a6b 100644
--- a/src/testdir/test64.in
+++ b/src/testdir/test64.in
@@ -425,6 +425,7 @@
 :"
 :" complicated look-behind match
 :call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/'])
+:call add(tl, [2, '^[a-z]\+\ze \&\(asdf\)\@<!', 'foo bar', 'foo'])
 :"
 :""""" \@>
 :call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
diff --git a/src/testdir/test64.ok b/src/testdir/test64.ok
index a1c3f56..401da40 100644
--- a/src/testdir/test64.ok
+++ b/src/testdir/test64.ok
@@ -983,6 +983,9 @@
 OK 0 - \(r\@<=\|\w\@<!\)\/
 OK 1 - \(r\@<=\|\w\@<!\)\/
 OK 2 - \(r\@<=\|\w\@<!\)\/
+OK 0 - ^[a-z]\+\ze \&\(asdf\)\@<!
+OK 1 - ^[a-z]\+\ze \&\(asdf\)\@<!
+OK 2 - ^[a-z]\+\ze \&\(asdf\)\@<!
 OK 0 - \(a*\)\@>a
 OK 1 - \(a*\)\@>a
 OK 2 - \(a*\)\@>a