diff -r 8201108e9cf0 src/eval.c
--- a/src/eval.c	Tue May 01 21:14:34 2012 +0200
+++ b/src/eval.c	Mon May 14 01:25:50 2012 +0200
@@ -14643,7 +14643,9 @@
 		    long growmin  = (long)((p - start) * 2 + prevlen);
 		    prevsize = grow50pc > growmin ? grow50pc : growmin;
 		}
-		if ((newprev = vim_realloc(prev, prevsize)) == NULL)
+		newprev = (prev == NULL) ?
+				alloc(prevsize) : vim_realloc(prev, prevsize);
+		if (newprev == NULL)
 		{
 		    do_outofmem_msg((long_u)prevsize);
 		    failed = TRUE;
