patch 8.1.0756: copy() does not make a copy of a Blob

Problem:    copy() does not make a copy of a Blob.
Solution:   Make a copy.
diff --git a/src/eval.c b/src/eval.c
index 049d15c..af1021b 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -8198,7 +8198,6 @@
 	case VAR_SPECIAL:
 	case VAR_JOB:
 	case VAR_CHANNEL:
-	case VAR_BLOB:
 	    copy_tv(from, to);
 	    break;
 	case VAR_LIST:
@@ -8217,6 +8216,21 @@
 	    if (to->vval.v_list == NULL)
 		ret = FAIL;
 	    break;
+	case VAR_BLOB:
+	    to->v_type = VAR_BLOB;
+	    if (from->vval.v_blob == NULL)
+		to->vval.v_blob = NULL;
+	    else if (rettv_blob_alloc(to) == FAIL)
+		ret = FAIL;
+	    else
+	    {
+		int  len = from->vval.v_blob->bv_ga.ga_len;
+
+		to->vval.v_blob->bv_ga.ga_data =
+			    vim_memsave(from->vval.v_blob->bv_ga.ga_data, len);
+		to->vval.v_blob->bv_ga.ga_len = len;
+	    }
+	    break;
 	case VAR_DICT:
 	    to->v_type = VAR_DICT;
 	    to->v_lock = 0;
diff --git a/src/testdir/test_blob.vim b/src/testdir/test_blob.vim
index 3eeb3d2..d5f682f 100644
--- a/src/testdir/test_blob.vim
+++ b/src/testdir/test_blob.vim
@@ -112,7 +112,14 @@
 
   call assert_false(b1 is b2)
   let b2 = b1
+  call assert_true(b1 == b2)
   call assert_true(b1 is b2)
+  let b2 = copy(b1)
+  call assert_true(b1 == b2)
+  call assert_false(b1 is b2)
+  let b2 = b1[:]
+  call assert_true(b1 == b2)
+  call assert_false(b1 is b2)
 
   call assert_fails('let x = b1 > b2')
   call assert_fails('let x = b1 < b2')
diff --git a/src/version.c b/src/version.c
index bb13765..6317a8e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -796,6 +796,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    756,
+/**/
     755,
 /**/
     754,