updated for version 7.2.407
Problem:    When using an expression in ":s" backslashes in the result are
            dropped. (Sergey Goldgaber, Christian Brabandt)
Solution:   Double backslashes.
diff --git a/src/regexp.c b/src/regexp.c
index 037222e..216bf3a 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -6963,6 +6963,8 @@
 	    eval_result = eval_to_string(source + 2, NULL, TRUE);
 	    if (eval_result != NULL)
 	    {
+		int had_backslash = FALSE;
+
 		for (s = eval_result; *s != NUL; mb_ptr_adv(s))
 		{
 		    /* Change NL to CR, so that it becomes a line break.
@@ -6970,7 +6972,20 @@
 		    if (*s == NL)
 			*s = CAR;
 		    else if (*s == '\\' && s[1] != NUL)
+		    {
 			++s;
+			had_backslash = TRUE;
+		    }
+		}
+		if (had_backslash && backslash)
+		{
+		    /* Backslashes will be consumed, need to double them. */
+		    s = vim_strsave_escaped(eval_result, (char_u *)"\\");
+		    if (s != NULL)
+		    {
+			vim_free(eval_result);
+			eval_result = s;
+		    }
 		}
 
 		dst += STRLEN(eval_result);
diff --git a/src/version.c b/src/version.c
index 59092b3..c10a627 100644
--- a/src/version.c
+++ b/src/version.c
@@ -682,6 +682,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    407,
+/**/
     406,
 /**/
     405,