[librvth] RvtH: Change m_nhcdHeader to an std::unique_ptr<>.

Reduces manual memory management shenanigans.
This commit is contained in:
David Korth 2025-05-21 18:44:53 -04:00
parent f9f3834711
commit 227abaec5a
2 changed files with 9 additions and 11 deletions

View File

@ -268,18 +268,17 @@ int RvtH::openHDD(RefFile *f_img)
size_t size;
// Check the bank table header.
m_nhcdHeader = new NHCD_BankTable_Header;
m_nhcdHeader.reset(new NHCD_BankTable_Header);
size = f_img->seekoAndRead(LBA_TO_BYTES(NHCD_BANKTABLE_ADDRESS_LBA), SEEK_SET,
m_nhcdHeader, 1, sizeof(*m_nhcdHeader));
if (size != sizeof(*m_nhcdHeader)) {
m_nhcdHeader.get(), 1, sizeof(NHCD_BankTable_Header));
if (size != sizeof(NHCD_BankTable_Header)) {
// Short read.
err = errno;
if (err == 0) {
err = EIO;
}
ret = -err;
delete m_nhcdHeader;
m_nhcdHeader = nullptr;
m_nhcdHeader.reset();
goto fail;
}
@ -471,7 +470,6 @@ fail:
*/
RvtH::RvtH(const TCHAR *filename, int *pErr)
: m_file(nullptr)
, m_nhcdHeader(nullptr)
, m_bankCount(0)
, m_imageType(RVTH_ImageType_Unknown)
, m_NHCD_status(NHCD_STATUS_UNKNOWN)
@ -534,9 +532,6 @@ RvtH::~RvtH()
// Free the bank entries array.
free(m_entries);
// Delete the NHCD bank table header.
delete m_nhcdHeader;
// Clear the main file reference.
if (m_file) {
m_file->unref();
@ -568,7 +563,7 @@ bool RvtH::isHDD(void) const
*/
NHCD_BankTable_Header *RvtH::nhcd_header(void) const
{
return m_nhcdHeader;
return m_nhcdHeader.get();
}
/**

View File

@ -183,6 +183,9 @@ typedef bool (*RvtH_Verify_Progress_Callback)(const RvtH_Verify_Progress_State *
#ifdef __cplusplus
// C++ STL classes
#include <memory>
/** Main class **/
class RvtH {
@ -508,7 +511,7 @@ private:
// NHCD bank table header
// NOTE: This will be nullptr for e.g. GCM disc images.
NHCD_BankTable_Header *m_nhcdHeader;
std::unique_ptr<NHCD_BankTable_Header> m_nhcdHeader;
// Number of banks.
// - RVT-H system or disk image: 8