Mercurial > vim
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) |