comparison src/eval.c @ 15496:f1c33409e908 v8.1.0756

patch 8.1.0756: copy() does not make a copy of a Blob commit https://github.com/vim/vim/commit/3d28b58c519c9fc3427587201423c74746cc219e Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jan 15 22:44:17 2019 +0100 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.
author Bram Moolenaar <Bram@vim.org>
date Tue, 15 Jan 2019 22:45:05 +0100
parents 98c35d312987
children 99a4cc4782ac
comparison
equal deleted inserted replaced
15495:617ca1eb76f8 15496:f1c33409e908
8196 case VAR_FUNC: 8196 case VAR_FUNC:
8197 case VAR_PARTIAL: 8197 case VAR_PARTIAL:
8198 case VAR_SPECIAL: 8198 case VAR_SPECIAL:
8199 case VAR_JOB: 8199 case VAR_JOB:
8200 case VAR_CHANNEL: 8200 case VAR_CHANNEL:
8201 case VAR_BLOB:
8202 copy_tv(from, to); 8201 copy_tv(from, to);
8203 break; 8202 break;
8204 case VAR_LIST: 8203 case VAR_LIST:
8205 to->v_type = VAR_LIST; 8204 to->v_type = VAR_LIST;
8206 to->v_lock = 0; 8205 to->v_lock = 0;
8214 } 8213 }
8215 else 8214 else
8216 to->vval.v_list = list_copy(from->vval.v_list, deep, copyID); 8215 to->vval.v_list = list_copy(from->vval.v_list, deep, copyID);
8217 if (to->vval.v_list == NULL) 8216 if (to->vval.v_list == NULL)
8218 ret = FAIL; 8217 ret = FAIL;
8218 break;
8219 case VAR_BLOB:
8220 to->v_type = VAR_BLOB;
8221 if (from->vval.v_blob == NULL)
8222 to->vval.v_blob = NULL;
8223 else if (rettv_blob_alloc(to) == FAIL)
8224 ret = FAIL;
8225 else
8226 {
8227 int len = from->vval.v_blob->bv_ga.ga_len;
8228
8229 to->vval.v_blob->bv_ga.ga_data =
8230 vim_memsave(from->vval.v_blob->bv_ga.ga_data, len);
8231 to->vval.v_blob->bv_ga.ga_len = len;
8232 }
8219 break; 8233 break;
8220 case VAR_DICT: 8234 case VAR_DICT:
8221 to->v_type = VAR_DICT; 8235 to->v_type = VAR_DICT;
8222 to->v_lock = 0; 8236 to->v_lock = 0;
8223 if (from->vval.v_dict == NULL) 8237 if (from->vval.v_dict == NULL)