summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Brabandt <cb@256bit.org>2024-04-05 20:12:19 +0200
committerChristian Brabandt <cb@256bit.org>2024-04-05 20:12:19 +0200
commit915f3bf4c157e8f1667f52a07eb98dcecfb76875 (patch)
tree772663073d208e47b6803a18a86686621e0d9704
parente9ff79a7c9affea970f50de2aa65f62080b55323 (diff)
patch 9.1.0270: a few minor issues to fixv9.1.0270
The following is a collection of some small fixes: - Problem: Vim9: funcref pointer pt leaks, when function is not found Solution: Free funcref pointer in case of error (fixes: #14254) - Problem: memory leak of crypt state pointer allocation fails Solution: free crypt state pointer properly (fixes: #14253) - Problem: Vim9: Leaking memory when compiling dict fails Solution: Free the memory in case of error (fixes: #14252) - Problem: Coverity complains about derefencing obj_members pointer (after v9.1.0261) Solution: Verify that obj_members ptr is non-null before accessing it References: https://scan5.scan.coverity.com/#/project-view/41242/10101?selectedIssue=1596133 closes: #14412 Signed-off-by: Christian Brabandt <cb@256bit.org>
-rw-r--r--src/memline.c3
-rw-r--r--src/userfunc.c4
-rw-r--r--src/version.c2
-rw-r--r--src/vim9execute.c1
-rw-r--r--src/vim9expr.c3
5 files changed, 12 insertions, 1 deletions
diff --git a/src/memline.c b/src/memline.c
index 5ca50fc1c9..6c63fad121 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -5556,7 +5556,10 @@ ml_encrypt_data(
new_data = alloc(size);
if (new_data == NULL)
+ {
+ crypt_free_state(state);
return NULL;
+ }
head_end = (char_u *)(&dp->db_index[dp->db_line_count]);
text_start = (char_u *)dp + dp->db_txt_start;
text_len = size - dp->db_txt_start;
diff --git a/src/userfunc.c b/src/userfunc.c
index b023c3a966..1bd1a28459 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -555,7 +555,9 @@ parse_argument_types(
type = &t_any;
for (int om = 0; om < obj_member_count; ++om)
{
- if (STRCMP(aname, obj_members[om].ocm_name) == 0)
+ if (obj_members != NULL
+ && STRCMP(aname,
+ obj_members[om].ocm_name) == 0)
{
type = obj_members[om].ocm_type;
break;
diff --git a/src/version.c b/src/version.c
index 9f9386f1f5..5a005bd5d1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 270,
+/**/
269,
/**/
268,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 053f6178a8..2d128e05b4 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -4573,6 +4573,7 @@ exec_instructions(ectx_T *ectx)
{
SOURCING_LNUM = iptr->isn_lnum;
iemsg("ufunc unexpectedly NULL for FUNCREF");
+ vim_free(pt);
goto theend;
}
if (fill_partial_and_closure(pt, ufunc,
diff --git a/src/vim9expr.c b/src/vim9expr.c
index 43b13d82c7..97a7f4e08a 100644
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -1561,7 +1561,10 @@ compile_dict(char_u **arg, cctx_T *cctx, ppconst_T *ppconst)
if (d == NULL)
return FAIL;
if (generate_ppconst(cctx, ppconst) == FAIL)
+ {
+ dict_unref(d);
return FAIL;
+ }
for (;;)
{
char_u *key = NULL;