From 41c4f4153c673e2be8dad9db2ab122663df295b1 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 28 Mar 2018 17:28:01 +0200 Subject: [PATCH] Use scope guard to ensure that free() is called in wxTLW code No real changes, just make the code safer by ensuring that free() is always called instead of doing it manually. --- src/msw/toplevel.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/msw/toplevel.cpp b/src/msw/toplevel.cpp index 4c96e1c13c..d83406d831 100644 --- a/src/msw/toplevel.cpp +++ b/src/msw/toplevel.cpp @@ -38,6 +38,7 @@ #endif //WX_PRECOMP #include "wx/dynlib.h" +#include "wx/scopeguard.h" #include "wx/tooltip.h" #include "wx/msw/private.h" @@ -438,6 +439,8 @@ bool wxTopLevelWindowMSW::Create(wxWindow *parent, // don't use DS_SETFONT we don't need the fourth WORD for the font) static const int dlgsize = sizeof(DLGTEMPLATE) + (sizeof(WORD) * 3); DLGTEMPLATE *dlgTemplate = (DLGTEMPLATE *)malloc(dlgsize); + wxON_BLOCK_EXIT1(free, dlgTemplate); + memset(dlgTemplate, 0, dlgsize); // these values are arbitrary, they won't be used normally anyhow @@ -470,7 +473,6 @@ bool wxTopLevelWindowMSW::Create(wxWindow *parent, dlgTemplate->style |= DS_MODALFRAME; ret = CreateDialog(dlgTemplate, title, pos, sizeReal); - free(dlgTemplate); } else // !dialog {