patch 8.1.0742: not all Blob operations are tested
Problem: Not all Blob operations are tested.
Solution: Add more testing for Blob.
diff --git a/src/evalfunc.c b/src/evalfunc.c
index c1c8c23..066716a 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -1258,8 +1258,14 @@
&& !tv_check_lock(b->bv_lock,
(char_u *)N_("add() argument"), TRUE))
{
- ga_append(&b->bv_ga, (char_u)tv_get_number(&argvars[1]));
- copy_tv(&argvars[0], rettv);
+ int error = FALSE;
+ varnumber_T n = tv_get_number_chk(&argvars[1], &error);
+
+ if (!error)
+ {
+ ga_append(&b->bv_ga, (int)n);
+ copy_tv(&argvars[0], rettv);
+ }
}
}
else
@@ -3196,7 +3202,6 @@
case VAR_BLOB:
n = argvars[0].vval.v_blob == NULL
- || argvars[0].vval.v_blob->bv_ga.ga_data == NULL
|| argvars[0].vval.v_blob->bv_ga.ga_len == 0;
break;
@@ -7029,6 +7034,13 @@
b = argvars[0].vval.v_blob;
if (b == NULL)
return;
+ if (start < 0)
+ {
+ start = blob_len(b) + start;
+ if (start < 0)
+ start = 0;
+ }
+
for (idx = start; idx < blob_len(b); ++idx)
{
tv.v_type = VAR_NUMBER;