From a3873c6f9ce96d50e0ea93539bb670518ad5fa88 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 4 Nov 2009 16:15:52 +0000 Subject: [PATCH] Revert "trivial" change of r61772. The "slight code simplification" of r61772 broke the code as it could now crash if dangling m_Cell pointer was used during parsing. Revert it and add a comment explaining why the code is written in the way it is. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62556 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/html/htmlwin.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/html/htmlwin.cpp b/src/html/htmlwin.cpp index 19c57ef57c..86e997045a 100644 --- a/src/html/htmlwin.cpp +++ b/src/html/htmlwin.cpp @@ -468,8 +468,14 @@ bool wxHtmlWindow::DoSetPage(const wxString& source) SetBackgroundImage(wxNullBitmap); m_Parser->SetDC(dc); - - delete m_Cell; + if (m_Cell) + { + delete m_Cell; + // notice that it's important to set m_Cell to NULL here before calling + // Parse() below, even if it will be overwritten by its return value: + // without this we may crash if it's used from inside Parse() + m_Cell = NULL; + } m_Cell = (wxHtmlContainerCell*) m_Parser->Parse(newsrc); delete dc; m_Cell->SetIndent(m_Borders, wxHTML_INDENT_ALL, wxHTML_UNITS_PIXELS); -- 2.45.2