mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
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.
This commit is contained in:
16
src/eval.c
16
src/eval.c
@@ -8198,7 +8198,6 @@ item_copy(
|
||||
case VAR_SPECIAL:
|
||||
case VAR_JOB:
|
||||
case VAR_CHANNEL:
|
||||
case VAR_BLOB:
|
||||
copy_tv(from, to);
|
||||
break;
|
||||
case VAR_LIST:
|
||||
@@ -8217,6 +8216,21 @@ item_copy(
|
||||
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;
|
||||
|
Reference in New Issue
Block a user