Safer way to null temp member variable.

(No, there were no returns or throws, but someone might
add one in future, and this version will still work.)

Also fixes some other compiler warnings.
This commit is contained in:
Jeff Young 2025-06-19 12:59:29 +01:00
parent 33c9a50afd
commit a51925bcf5

View File

@ -112,9 +112,7 @@ void SCH_EDIT_FRAME::ShowSchematicSetupDialog( const wxString& aInitialPage )
if( !dialogLock.owns_lock() ) if( !dialogLock.owns_lock() )
{ {
if( m_schematicSetupDialog && m_schematicSetupDialog->IsShown() ) if( m_schematicSetupDialog && m_schematicSetupDialog->IsShown() )
{
m_schematicSetupDialog->Raise(); // Brings the existing dialog to the front m_schematicSetupDialog->Raise(); // Brings the existing dialog to the front
}
return; return;
} }
@ -134,7 +132,8 @@ void SCH_EDIT_FRAME::ShowSchematicSetupDialog( const wxString& aInitialPage )
dlg.SetInitialPage( aInitialPage, wxEmptyString ); dlg.SetInitialPage( aInitialPage, wxEmptyString );
// Assign dlg to the m_schematicSetupDialog pointer to track its status. // Assign dlg to the m_schematicSetupDialog pointer to track its status.
m_schematicSetupDialog = &dlg; // No, this does not escape the function context.
NULLER raii_nuller( (void*&) m_schematicSetupDialog ); m_schematicSetupDialog = &dlg;
// TODO: is QuasiModal required here? // TODO: is QuasiModal required here?
if( dlg.ShowQuasiModal() == wxID_OK ) if( dlg.ShowQuasiModal() == wxID_OK )
@ -162,8 +161,7 @@ void SCH_EDIT_FRAME::ShowSchematicSetupDialog( const wxString& aInitialPage )
std::vector<std::shared_ptr<BUS_ALIAS>> newAliases; std::vector<std::shared_ptr<BUS_ALIAS>> newAliases;
for( SCH_SCREEN* screen = screens.GetFirst(); screen != nullptr; for( SCH_SCREEN* screen = screens.GetFirst(); screen != nullptr; screen = screens.GetNext() )
screen = screens.GetNext() )
{ {
for( const std::shared_ptr<BUS_ALIAS>& alias : screen->GetBusAliases() ) for( const std::shared_ptr<BUS_ALIAS>& alias : screen->GetBusAliases() )
newAliases.push_back( alias ); newAliases.push_back( alias );
@ -175,9 +173,6 @@ void SCH_EDIT_FRAME::ShowSchematicSetupDialog( const wxString& aInitialPage )
RefreshOperatingPointDisplay(); RefreshOperatingPointDisplay();
GetCanvas()->Refresh(); GetCanvas()->Refresh();
} }
// Reset m_schematicSetupDialog after the dialog is closed
m_schematicSetupDialog = nullptr;
} }
@ -187,7 +182,7 @@ int SCH_EDIT_FRAME::GetSchematicJunctionSize()
const std::shared_ptr<NET_SETTINGS>& netSettings = Prj().GetProjectFile().NetSettings(); const std::shared_ptr<NET_SETTINGS>& netSettings = Prj().GetProjectFile().NetSettings();
int sizeChoice = Schematic().Settings().m_JunctionSizeChoice; int sizeChoice = Schematic().Settings().m_JunctionSizeChoice;
int dotSize = netSettings->GetDefaultNetclass()->GetWireWidth() * sizeMultipliers[sizeChoice]; int dotSize = KiROUND( netSettings->GetDefaultNetclass()->GetWireWidth() * sizeMultipliers[sizeChoice] );
return std::max( dotSize, 1 ); return std::max( dotSize, 1 );
} }
@ -218,8 +213,7 @@ void SCH_EDIT_FRAME::saveProjectSettings()
// Save the page layout file if doesn't exist yet (e.g. if we opened a non-kicad schematic) // Save the page layout file if doesn't exist yet (e.g. if we opened a non-kicad schematic)
// TODO: We need to remove dependence on BASE_SCREEN // TODO: We need to remove dependence on BASE_SCREEN
Prj().GetProjectFile().m_SchematicSettings->m_SchDrawingSheetFileName Prj().GetProjectFile().m_SchematicSettings->m_SchDrawingSheetFileName = BASE_SCREEN::m_DrawingSheetFileName;
= BASE_SCREEN::m_DrawingSheetFileName;
if( !BASE_SCREEN::m_DrawingSheetFileName.IsEmpty() ) if( !BASE_SCREEN::m_DrawingSheetFileName.IsEmpty() )
{ {
@ -312,8 +306,7 @@ void SCH_EDIT_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
cfg->m_FindReplaceExtra.search_all_fields = searchData->searchAllFields; cfg->m_FindReplaceExtra.search_all_fields = searchData->searchAllFields;
cfg->m_FindReplaceExtra.search_metadata = searchData->searchMetadata; cfg->m_FindReplaceExtra.search_metadata = searchData->searchMetadata;
cfg->m_FindReplaceExtra.search_all_pins = searchData->searchAllPins; cfg->m_FindReplaceExtra.search_all_pins = searchData->searchAllPins;
cfg->m_FindReplaceExtra.search_current_sheet_only = cfg->m_FindReplaceExtra.search_current_sheet_only = searchData->searchCurrentSheetOnly;
searchData->searchCurrentSheetOnly;
cfg->m_FindReplaceExtra.search_selected_only = searchData->searchSelectedOnly; cfg->m_FindReplaceExtra.search_selected_only = searchData->searchSelectedOnly;
} }
@ -347,7 +340,9 @@ void SCH_EDIT_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
cfg->m_AuiPanels.design_blocks_show = designBlocksPane.IsShown(); cfg->m_AuiPanels.design_blocks_show = designBlocksPane.IsShown();
if( designBlocksPane.IsDocked() ) if( designBlocksPane.IsDocked() )
{
cfg->m_AuiPanels.design_blocks_panel_docked_width = m_designBlocksPane->GetSize().x; cfg->m_AuiPanels.design_blocks_panel_docked_width = m_designBlocksPane->GetSize().x;
}
else else
{ {
cfg->m_AuiPanels.design_blocks_panel_float_height = designBlocksPane.floating_size.y; cfg->m_AuiPanels.design_blocks_panel_float_height = designBlocksPane.floating_size.y;
@ -371,7 +366,8 @@ void SCH_BASE_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
// Move legacy user grids to grid list // Move legacy user grids to grid list
if( !aCfg->m_Window.grid.user_grid_x.empty() ) if( !aCfg->m_Window.grid.user_grid_x.empty() )
{ {
aCfg->m_Window.grid.grids.emplace_back( GRID{ "User Grid", aCfg->m_Window.grid.user_grid_x, aCfg->m_Window.grid.grids.emplace_back( GRID{ "User Grid",
aCfg->m_Window.grid.user_grid_x,
aCfg->m_Window.grid.user_grid_y } ); aCfg->m_Window.grid.user_grid_y } );
aCfg->m_Window.grid.user_grid_x = wxEmptyString; aCfg->m_Window.grid.user_grid_x = wxEmptyString;
aCfg->m_Window.grid.user_grid_y = wxEmptyString; aCfg->m_Window.grid.user_grid_y = wxEmptyString;
@ -387,9 +383,7 @@ void SCH_BASE_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
aCfg->m_Window.grid.fast_grid_2 = 2; aCfg->m_Window.grid.fast_grid_2 = 2;
if( aCfg->m_Window.zoom_factors.empty() ) if( aCfg->m_Window.zoom_factors.empty() )
{
aCfg->m_Window.zoom_factors = { ZOOM_LIST_EESCHEMA }; aCfg->m_Window.zoom_factors = { ZOOM_LIST_EESCHEMA };
}
} }