diff src/userfunc.c @ 17659:121bdff812b4 v8.1.1827

patch 8.1.1827: allocating more memory than needed for extended structs commit https://github.com/vim/vim/commit/47ed553fd5bebfc36eb8aa81686eeaa5a84eccac Author: Bram Moolenaar <Bram@vim.org> Date: Thu Aug 8 20:49:14 2019 +0200 patch 8.1.1827: allocating more memory than needed for extended structs Problem: Allocating more memory than needed for extended structs. Solution: Use offsetof() instead of sizeof(). (Dominique Pelle, closes #4786)
author Bram Moolenaar <Bram@vim.org>
date Thu, 08 Aug 2019 21:00:07 +0200
parents e5397617d6ca
children 1726c2db81bf
line wrap: on
line diff
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -288,7 +288,7 @@ get_lambda_tv(char_u **arg, typval_T *re
 
 	sprintf((char*)name, "<lambda>%d", ++lambda_no);
 
-	fp = alloc_clear(sizeof(ufunc_T) + STRLEN(name));
+	fp = alloc_clear(offsetof(ufunc_T, uf_name) + STRLEN(name) + 1);
 	if (fp == NULL)
 	    goto errret;
 	pt = ALLOC_CLEAR_ONE(partial_T);
@@ -2631,7 +2631,7 @@ ex_function(exarg_T *eap)
 	    }
 	}
 
-	fp = alloc_clear(sizeof(ufunc_T) + STRLEN(name));
+	fp = alloc_clear(offsetof(ufunc_T, uf_name) + STRLEN(name) + 1);
 	if (fp == NULL)
 	    goto erret;