From ce70e34476a4a7eb23b4b7585a1a3277e6fcb38a Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Sat, 12 Mar 2022 21:45:07 +0100 Subject: rbutil: Fix ipodpatcher bootloader uninstall. Fix mountpoint not passed and sectorbuf not initialized properly. Change-Id: Ifa9d9e159767b20a51841ee422be59feca95c757 --- utils/rbutilqt/base/bootloaderinstallipod.cpp | 11 ++++++----- utils/rbutilqt/rbutilqt.cpp | 5 +++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/utils/rbutilqt/base/bootloaderinstallipod.cpp b/utils/rbutilqt/base/bootloaderinstallipod.cpp index faab3d10f5..c556ea27d3 100644 --- a/utils/rbutilqt/base/bootloaderinstallipod.cpp +++ b/utils/rbutilqt/base/bootloaderinstallipod.cpp @@ -42,11 +42,7 @@ BootloaderInstallIpod::~BootloaderInstallIpod() bool BootloaderInstallIpod::install(void) { - // initialize sector buffer. The sector buffer is part of the ipod_t - // structure, so a second instance of this class will have its own buffer. - if(ipod.sectorbuf == nullptr) { - ipod_alloc_buffer(&ipod, BUFFER_SIZE); - } + ipodInitialize(&ipod); if(ipod.sectorbuf == nullptr) { emit logItem(tr("Error: can't allocate buffer memory!"), LOGERROR); @@ -227,6 +223,11 @@ BootloaderInstallBase::Capabilities BootloaderInstallIpod::capabilities(void) */ bool BootloaderInstallIpod::ipodInitialize(struct ipod_t *ipod) { + // initialize sector buffer. The sector buffer is part of the ipod_t + // structure, so a second instance of this class will have its own buffer. + if(ipod->sectorbuf == nullptr) { + ipod_alloc_buffer(ipod, BUFFER_SIZE); + } if(!m_blfile.isEmpty()) { QString devicename = Utils::resolveDevicename(m_blfile); if(devicename.isEmpty()) { diff --git a/utils/rbutilqt/rbutilqt.cpp b/utils/rbutilqt/rbutilqt.cpp index 20828849a9..9cb5b7cf30 100644 --- a/utils/rbutilqt/rbutilqt.cpp +++ b/utils/rbutilqt/rbutilqt.cpp @@ -473,6 +473,11 @@ void RbUtilQt::uninstallBootloader(void) blfilepath.append(RbSettings::value(RbSettings::Mountpoint).toString() + blfile.at(a)); } + // on devices without a bootloader file we use the mointpoint. The + // installer will use that to determine the correct device. + if(blfile.isEmpty()) { + blfilepath.append(RbSettings::value(RbSettings::Mountpoint).toString()); + } bl->setBlFile(blfilepath); bl->setLogfile(RbSettings::value(RbSettings::Mountpoint).toString() + "/.rockbox/rbutil.log"); -- cgit v1.2.3