patch 8.1.0551: expression evaluation may repeat an error message

Problem:    Expression evaluation may repeat an error message. (Jason
            Franklin)
Solution:   Check for the value of did_emsg when giving an error
            for the :execute command.
diff --git a/src/eval.c b/src/eval.c
index a525678..7dfb981 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -8115,7 +8115,7 @@
     char_u	*p;
     garray_T	ga;
     int		len;
-    int		save_did_emsg;
+    int		save_did_emsg = did_emsg;
 
     ga_init2(&ga, 1, 80);
 
@@ -8131,7 +8131,7 @@
 	     * has been cancelled due to an aborting error, an interrupt, or an
 	     * exception.
 	     */
-	    if (!aborting())
+	    if (!aborting() && did_emsg == save_did_emsg)
 		EMSG2(_(e_invexpr2), p);
 	    ret = FAIL;
 	    break;
diff --git a/src/version.c b/src/version.c
index d8d66f0..29f3ec5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -793,6 +793,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    551,
+/**/
     550,
 /**/
     549,