From 4e837218e5afc7e5337f1685382558b1a2cafd91 Mon Sep 17 00:00:00 2001 From: Nav Date: Sun, 2 Jun 2024 21:33:54 +0100 Subject: [PATCH] Corrected use of destroyed objects in EDBG param constructors --- .../AVR8Generic/DebugWireJtagParameters.cpp | 13 ++++++------- .../AVR/Parameters/AVR8Generic/PdiParameters.cpp | 3 ++- .../AVR/Parameters/AVR8Generic/UpdiParameters.cpp | 5 ++--- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/DebugToolDrivers/Microchip/Protocols/EDBG/AVR/Parameters/AVR8Generic/DebugWireJtagParameters.cpp b/src/DebugToolDrivers/Microchip/Protocols/EDBG/AVR/Parameters/AVR8Generic/DebugWireJtagParameters.cpp index b76fed4b..1d7d1dcd 100644 --- a/src/DebugToolDrivers/Microchip/Protocols/EDBG/AVR/Parameters/AVR8Generic/DebugWireJtagParameters.cpp +++ b/src/DebugToolDrivers/Microchip/Protocols/EDBG/AVR/Parameters/AVR8Generic/DebugWireJtagParameters.cpp @@ -36,8 +36,8 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen this->ocdRevision = StringService::toUint8(ocdPropertyGroup.getProperty("ocd_revision").value); this->ocdDataRegisterAddress = StringService::toUint8(ocdPropertyGroup.getProperty("ocd_datareg").value); - const auto& eepromRegisterGroupDescriptor = targetDescriptionFile.getTargetPeripheralDescriptor("eeprom") - .getRegisterGroupDescriptor("eeprom"); + const auto eepromPeripheralDescriptor = targetDescriptionFile.getTargetPeripheralDescriptor("eeprom"); + const auto& eepromRegisterGroupDescriptor = eepromPeripheralDescriptor.getRegisterGroupDescriptor("eeprom"); const auto& eearDescriptor = eepromRegisterGroupDescriptor.tryGetRegisterDescriptor("eear"); if (eearDescriptor.has_value()) { @@ -77,8 +77,8 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen eepromRegisterGroupDescriptor.getRegisterDescriptor("eecr").startAddress ); - const auto& cpuRegisterGroupDescriptor = targetDescriptionFile.getTargetPeripheralDescriptor("cpu") - .getRegisterGroupDescriptor("cpu"); + const auto cpuPeripheralDescriptor = targetDescriptionFile.getTargetPeripheralDescriptor("cpu"); + const auto& cpuRegisterGroupDescriptor = cpuPeripheralDescriptor.getRegisterGroupDescriptor("cpu"); const auto spmcsrDescriptor = cpuRegisterGroupDescriptor.tryGetRegisterDescriptor("spmcsr") ?: cpuRegisterGroupDescriptor.tryGetRegisterDescriptor("spmcr"); @@ -87,9 +87,8 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen this->spmcrAddress = static_cast(spmcsrDescriptor->get().startAddress); } else { - const auto& bootLoaderRegisterGroupDescriptor = targetDescriptionFile.getTargetPeripheralDescriptor( - "boot_load" - ).getRegisterGroupDescriptor("boot_load"); + const auto bootLoadPeripheral = targetDescriptionFile.getTargetPeripheralDescriptor("boot_load"); + const auto& bootLoaderRegisterGroupDescriptor = bootLoadPeripheral.getRegisterGroupDescriptor("boot_load"); const auto spmcsrDescriptor = bootLoaderRegisterGroupDescriptor.tryGetRegisterDescriptor("spmcsr") ?: bootLoaderRegisterGroupDescriptor.tryGetRegisterDescriptor("spmcr"); diff --git a/src/DebugToolDrivers/Microchip/Protocols/EDBG/AVR/Parameters/AVR8Generic/PdiParameters.cpp b/src/DebugToolDrivers/Microchip/Protocols/EDBG/AVR/Parameters/AVR8Generic/PdiParameters.cpp index ae6120ca..daffdcb7 100644 --- a/src/DebugToolDrivers/Microchip/Protocols/EDBG/AVR/Parameters/AVR8Generic/PdiParameters.cpp +++ b/src/DebugToolDrivers/Microchip/Protocols/EDBG/AVR/Parameters/AVR8Generic/PdiParameters.cpp @@ -30,8 +30,9 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen this->eepromSize = static_cast(eepromMemorySegment.size); this->eepromPageSize = static_cast(eepromMemorySegment.pageSize.value()); + const auto nvmPeripheralDescriptor = targetDescriptionFile.getTargetPeripheralDescriptor("nvm"); this->nvmModuleBaseAddress = static_cast( - targetDescriptionFile.getTargetPeripheralDescriptor("nvm").getRegisterGroupDescriptor("nvm").startAddress() + nvmPeripheralDescriptor.getRegisterGroupDescriptor("nvm").startAddress() ); } } diff --git a/src/DebugToolDrivers/Microchip/Protocols/EDBG/AVR/Parameters/AVR8Generic/UpdiParameters.cpp b/src/DebugToolDrivers/Microchip/Protocols/EDBG/AVR/Parameters/AVR8Generic/UpdiParameters.cpp index a41fb879..68d863d4 100644 --- a/src/DebugToolDrivers/Microchip/Protocols/EDBG/AVR/Parameters/AVR8Generic/UpdiParameters.cpp +++ b/src/DebugToolDrivers/Microchip/Protocols/EDBG/AVR/Parameters/AVR8Generic/UpdiParameters.cpp @@ -30,10 +30,9 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::Parameters::Avr8Gen this->fuseSegmentStartAddress = static_cast(fuseMemorySegment.startAddress); this->lockbitSegmentStartAddress = static_cast(lockbitMemorySegment.startAddress); + const auto nvmCtrlPeripheralDescriptor = targetDescriptionFile.getTargetPeripheralDescriptor("nvmctrl"); this->nvmModuleBaseAddress = static_cast( - targetDescriptionFile.getTargetPeripheralDescriptor("nvmctrl").getRegisterGroupDescriptor( - "nvmctrl" - ).startAddress() + nvmCtrlPeripheralDescriptor.getRegisterGroupDescriptor("nvmctrl").startAddress() ); } }