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)
diff --git a/src/userfunc.c b/src/userfunc.c
index a739a75..2bdc2b1 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -288,7 +288,7 @@
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 @@
}
}
- fp = alloc_clear(sizeof(ufunc_T) + STRLEN(name));
+ fp = alloc_clear(offsetof(ufunc_T, uf_name) + STRLEN(name) + 1);
if (fp == NULL)
goto erret;