wer: Use FIELD_OFFSET to calculate the size of a struct with variable length array
Michael Stefaniuc
mstefani at redhat.de
Wed Jun 13 03:39:52 CDT 2012
The old code was allocating more memory than needed.
---
dlls/wer/main.c | 5 +----
1 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/dlls/wer/main.c b/dlls/wer/main.c
index ae9ab26..78943eb 100644
--- a/dlls/wer/main.c
+++ b/dlls/wer/main.c
@@ -261,7 +261,6 @@ HRESULT WINAPI WerReportCloseHandle(HREPORT hreport)
HRESULT WINAPI WerReportCreate(PCWSTR eventtype, WER_REPORT_TYPE reporttype, PWER_REPORT_INFORMATION reportinfo, HREPORT *phandle)
{
report_t *report;
- DWORD len;
TRACE("(%s, %d, %p, %p)\n", debugstr_w(eventtype), reporttype, reportinfo, phandle);
if (reportinfo) {
@@ -274,9 +273,7 @@ HRESULT WINAPI WerReportCreate(PCWSTR eventtype, WER_REPORT_TYPE reporttype, PWE
return E_INVALIDARG;
}
- len = lstrlenW(eventtype) + 1;
-
- report = heap_alloc_zero(len * sizeof(WCHAR) + sizeof(report_t));
+ report = heap_alloc_zero(FIELD_OFFSET(report_t, eventtype[lstrlenW(eventtype) + 1]));
if (!report)
return __HRESULT_FROM_WIN32(ERROR_OUTOFMEMORY);
--
1.7.7.6
More information about the wine-patches
mailing list