comparison src/eval.c @ 24450:3e1886f1e875 v8.2.2765

patch 8.2.2765: Vim9: not all blob operations work Commit: https://github.com/vim/vim/commit/0e3ff1919603ee4c4a347fdf761dbdbdeb068015 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Apr 14 20:35:23 2021 +0200 patch 8.2.2765: Vim9: not all blob operations work Problem: Vim9: not all blob operations work. Solution: Run more tests also with Vim9 script and :def functions. Fix what doesn't work.
author Bram Moolenaar <Bram@vim.org>
date Wed, 14 Apr 2021 20:45:04 +0200
parents d2f9bdd938fa
children 53216e87f21c
comparison
equal deleted inserted replaced
24449:ca0d84e008e5 24450:3e1886f1e875
1173 else 1173 else
1174 // is number or string 1174 // is number or string
1175 lp->ll_n1 = (long)tv_get_number(&var1); 1175 lp->ll_n1 = (long)tv_get_number(&var1);
1176 clear_tv(&var1); 1176 clear_tv(&var1);
1177 1177
1178 if (lp->ll_n1 < 0 1178 if (check_blob_index(bloblen, lp->ll_n1, lp->ll_range, quiet)
1179 || lp->ll_n1 > bloblen 1179 == FAIL)
1180 || (lp->ll_range && lp->ll_n1 == bloblen)) 1180 {
1181 {
1182 if (!quiet)
1183 semsg(_(e_blobidx), lp->ll_n1);
1184 clear_tv(&var2); 1181 clear_tv(&var2);
1185 return NULL; 1182 return NULL;
1186 } 1183 }
1187 if (lp->ll_range && !lp->ll_empty2) 1184 if (lp->ll_range && !lp->ll_empty2)
1188 { 1185 {
1189 lp->ll_n2 = (long)tv_get_number(&var2); 1186 lp->ll_n2 = (long)tv_get_number(&var2);
1190 clear_tv(&var2); 1187 clear_tv(&var2);
1191 if (lp->ll_n2 < 0 1188 if (check_blob_range(bloblen, lp->ll_n1, lp->ll_n2, quiet)
1192 || lp->ll_n2 >= bloblen 1189 == FAIL)
1193 || lp->ll_n2 < lp->ll_n1)
1194 {
1195 if (!quiet)
1196 semsg(_(e_blobidx), lp->ll_n2);
1197 return NULL; 1190 return NULL;
1198 }
1199 } 1191 }
1200 lp->ll_blob = lp->ll_tv->vval.v_blob; 1192 lp->ll_blob = lp->ll_tv->vval.v_blob;
1201 lp->ll_tv = NULL; 1193 lp->ll_tv = NULL;
1202 break; 1194 break;
1203 } 1195 }