From 960b553a709a1f571a86957e66411ba35804fd56 Mon Sep 17 00:00:00 2001 From: Ian McInerney Date: Sun, 12 Jan 2020 19:47:13 +0000 Subject: [PATCH] Cleanup type casting in EE toolbase * Ensure the lib edit undo checks for pointer validity * Assert that the frames are the correct type (satisfies coverity) * Convert C casts to C++ casts --- eeschema/libedit/libedit_undo_redo.cpp | 3 +++ eeschema/tools/ee_tool_base.h | 11 +++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/eeschema/libedit/libedit_undo_redo.cpp b/eeschema/libedit/libedit_undo_redo.cpp index 6718141428..c038c1e867 100644 --- a/eeschema/libedit/libedit_undo_redo.cpp +++ b/eeschema/libedit/libedit_undo_redo.cpp @@ -38,6 +38,9 @@ void LIB_EDIT_FRAME::SaveCopyInUndoList( EDA_ITEM* ItemToCopy, UNDO_REDO_T undoT { wxASSERT_MSG( !aAppend, "Append not needed/supported for LibEdit" ); + if( !ItemToCopy ) + return; + LIB_PART* CopyItem; PICKED_ITEMS_LIST* lastcmd = new PICKED_ITEMS_LIST(); diff --git a/eeschema/tools/ee_tool_base.h b/eeschema/tools/ee_tool_base.h index ca3a1822e8..47059fc48f 100644 --- a/eeschema/tools/ee_tool_base.h +++ b/eeschema/tools/ee_tool_base.h @@ -127,17 +127,20 @@ protected: if( m_isLibEdit ) { LIB_EDIT_FRAME* editFrame = dynamic_cast( m_frame ); - editFrame->SaveCopyInUndoList( (LIB_ITEM*) aItem, aType, aAppend ); + wxASSERT( editFrame ); + + editFrame->SaveCopyInUndoList( dynamic_cast( aItem ), aType, aAppend ); } else { SCH_EDIT_FRAME* editFrame = dynamic_cast( m_frame ); + wxASSERT( editFrame ); if( itemType == SCH_PIN_T || itemType == SCH_FIELD_T || itemType == SCH_SHEET_PIN_T ) - editFrame->SaveCopyInUndoList( (SCH_ITEM*) aItem->GetParent(), UR_CHANGED, - aAppend ); + editFrame->SaveCopyInUndoList( + dynamic_cast( aItem->GetParent() ), UR_CHANGED, aAppend ); else - editFrame->SaveCopyInUndoList( (SCH_ITEM*) aItem, aType, aAppend ); + editFrame->SaveCopyInUndoList( dynamic_cast( aItem ), aType, aAppend ); } if( selected && aItem->HasFlag( TEMP_SELECTED ) )