updated for version 7.0e06
diff --git a/src/regexp.c b/src/regexp.c
index e0bfb03..2cd3120 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -7054,7 +7054,7 @@
     int		round;
     linenr_T	lnum;
 
-    if (!can_f_submatch)
+    if (!can_f_submatch || no < 0)
 	return NULL;
 
     if (submatch_match == NULL)
@@ -7112,10 +7112,10 @@
 		++len;
 	    }
 
-	    if (round == 1)
+	    if (retval == NULL)
 	    {
 		retval = lalloc((long_u)len, TRUE);
-		if (s == NULL)
+		if (retval == NULL)
 		    return NULL;
 	    }
 	}