diff src/evalfunc.c @ 15304:5bfdce4de97f v8.1.0660

patch 8.1.0660: sign_cleanup() may leak memory commit https://github.com/vim/vim/commit/1ea88a3e12e5f6afc5353cd0d6e6d4f4a89ced94 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Dec 29 21:00:27 2018 +0100 patch 8.1.0660: sign_cleanup() may leak memory Problem: sign_cleanup() may leak memory. Solution: Free the group name before returning. Add a few more tests. (Yegappan Lakshmanan)
author Bram Moolenaar <Bram@vim.org>
date Sat, 29 Dec 2018 21:15:05 +0100
parents 890203d87ee5
children a6330a49e036
line wrap: on
line diff
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -11578,7 +11578,7 @@ f_sign_unplace(typval_T *argvars, typval
 	if (argvars[1].v_type != VAR_DICT)
 	{
 	    EMSG(_(e_dictreq));
-	    return;
+	    goto cleanup;
 	}
 	dict = argvars[1].vval.v_dict;
 
@@ -11589,7 +11589,7 @@ f_sign_unplace(typval_T *argvars, typval
 	    {
 		EMSG2(_("E158: Invalid buffer name: %s"),
 						tv_get_string(&di->di_tv));
-		return;
+		goto cleanup;
 	    }
 	}
 	if (dict_find(dict, (char_u *)"id", -1) != NULL)
@@ -11608,6 +11608,8 @@ f_sign_unplace(typval_T *argvars, typval
 	if (sign_unplace(sign_id, group, buf, 0) == OK)
 	    rettv->vval.v_number = 0;
     }
+
+cleanup:
     vim_free(group);
 }
 #endif