patch 9.1.0270: a few minor issues to fix

Commit: 
https://github.com/vim/vim/commit/915f3bf4c157e8f1667f52a07eb98dcecfb76875
Author: Christian Brabandt <c...@256bit.org>
Date:   Fri Apr 5 20:12:19 2024 +0200

    patch 9.1.0270: a few minor issues to fix
    
    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 <c...@256bit.org>

diff --git a/src/memline.c b/src/memline.c
index 5ca50fc1c..6c63fad12 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 b023c3a96..1bd1a2845 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 9f9386f1f..5a005bd5d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    270,
 /**/
     269,
 /**/
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 053f6178a..2d128e05b 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 43b13d82c..97a7f4e08 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;

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1rso5k-00AJhQ-EL%40256bit.org.

Raspunde prin e-mail lui