diff src/blob.c @ 15589:44ea60ca593b v8.1.0802

patch 8.1.0802: negative index doesn't work for Blob commit https://github.com/vim/vim/commit/a5be9b62480a6f338a72c01e57c9edd0bca8048b Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jan 24 12:31:44 2019 +0100 patch 8.1.0802: negative index doesn't work for Blob Problem: Negative index doesn't work for Blob. Solution: Make it work, add a test. (closes https://github.com/vim/vim/issues/3856)
author Bram Moolenaar <Bram@vim.org>
date Thu, 24 Jan 2019 12:45:05 +0100
parents c2382f0d1279
children 27f9f4c1400b
line wrap: on
line diff
--- a/src/blob.c
+++ b/src/blob.c
@@ -72,8 +72,12 @@ blob_copy(typval_T *from, typval_T *to)
 	int  len = from->vval.v_blob->bv_ga.ga_len;
 
 	if (len > 0)
+	{
 	    to->vval.v_blob->bv_ga.ga_data =
 			    vim_memsave(from->vval.v_blob->bv_ga.ga_data, len);
+	    if (to->vval.v_blob->bv_ga.ga_data == NULL)
+		len = 0;
+	}
 	to->vval.v_blob->bv_ga.ga_len = len;
     }
     return ret;
@@ -112,7 +116,7 @@ blob_len(blob_T *b)
  * Get byte "idx" in blob "b".
  * Caller must check that "idx" is valid.
  */
-    char_u
+    int
 blob_get(blob_T *b, int idx)
 {
     return ((char_u*)b->bv_ga.ga_data)[idx];