From ecb81426a4c669d84bc3631f694fa70bd63b62db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20W=C5=82ostowski?= Date: Thu, 23 May 2019 00:28:51 +0200 Subject: [PATCH] eemodern: fixed use-after-free in SCH_DRAWING_TOOLS::DrawSheet(). --- eeschema/tools/sch_drawing_tools.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/eeschema/tools/sch_drawing_tools.cpp b/eeschema/tools/sch_drawing_tools.cpp index 5f953beb8f..3868d524e1 100644 --- a/eeschema/tools/sch_drawing_tools.cpp +++ b/eeschema/tools/sch_drawing_tools.cpp @@ -855,7 +855,6 @@ int SCH_DRAWING_TOOLS::DrawSheet( const TOOL_EVENT& aEvent ) sheet->SetScreen( NULL ); sizeSheet( sheet, cursorPos ); - m_selectionTool->AddItemToSel( sheet ); m_view->ClearPreview(); m_view->AddToPreview( sheet->Clone() ); } @@ -866,9 +865,14 @@ int SCH_DRAWING_TOOLS::DrawSheet( const TOOL_EVENT& aEvent ) m_view->ClearPreview(); if( m_frame->EditSheet( (SCH_SHEET*)sheet, g_CurrentSheet, nullptr ) ) + { m_frame->AddItemToScreenAndUndoList( sheet ); - else + m_selectionTool->AddItemToSel( sheet ); + } + else + { delete sheet; + } sheet = nullptr; }