From 40452c9826f430c1d7da7a7977d3c102ee7df51e Mon Sep 17 00:00:00 2001 From: Paul I Date: Sat, 23 Mar 2019 13:54:34 +0300 Subject: [PATCH] Some micro optimizations (#1346) --- src/Main.cpp | 2 +- src/common/AsyncTask.cpp | 4 ++-- src/common/BasicBlockHighlighter.cpp | 4 ++-- src/common/RichTextPainter.cpp | 2 +- src/common/TempConfig.cpp | 2 +- src/common/UpdateWorker.cpp | 2 +- src/core/Cutter.cpp | 17 ++++++----------- src/core/Cutter.h | 2 +- src/dialogs/AboutDialog.cpp | 2 +- src/dialogs/AttachProcDialog.cpp | 4 ++-- src/dialogs/EditFunctionDialog.cpp | 4 ++-- src/dialogs/EditFunctionDialog.h | 4 ++-- src/dialogs/EditInstructionDialog.cpp | 2 +- src/dialogs/EditVariablesDialog.cpp | 2 +- src/dialogs/LinkTypeDialog.cpp | 2 +- src/dialogs/NewFileDialog.cpp | 4 +--- src/dialogs/XrefsDialog.cpp | 17 ++++++----------- src/menus/DisassemblyContextMenu.cpp | 4 ++-- src/plugins/PluginManager.cpp | 3 +-- src/widgets/BreakpointWidget.cpp | 2 +- src/widgets/ColorSchemePrefWidget.cpp | 2 +- src/widgets/Dashboard.cpp | 13 ++++++------- src/widgets/DebugActions.cpp | 2 +- src/widgets/FunctionsWidget.cpp | 10 ++++++---- src/widgets/SdbWidget.cpp | 14 +++++++------- src/widgets/SectionsWidget.cpp | 23 ++++++++++++----------- src/widgets/VisualNavbar.cpp | 2 +- 27 files changed, 70 insertions(+), 81 deletions(-) diff --git a/src/Main.cpp b/src/Main.cpp index 4e15811b..8c2e7c47 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -40,7 +40,7 @@ int main(int argc, char *argv[]) UpdateWorker *updateWorker = new UpdateWorker; QObject::connect(updateWorker, &UpdateWorker::checkComplete, [=](const QVersionNumber &version, const QString & error) { - if (error == "" && version > UpdateWorker::currentVersionNumber()) { + if (error.isEmpty() && version > UpdateWorker::currentVersionNumber()) { updateWorker->showUpdateDialog(true); } updateWorker->deleteLater(); diff --git a/src/common/AsyncTask.cpp b/src/common/AsyncTask.cpp index fc0b3429..10014622 100644 --- a/src/common/AsyncTask.cpp +++ b/src/common/AsyncTask.cpp @@ -47,7 +47,7 @@ void AsyncTask::run() running = true; - logBuffer = ""; + logBuffer.clear(); emit logChanged(logBuffer); runTask(); @@ -60,7 +60,7 @@ void AsyncTask::run() void AsyncTask::log(QString s) { - logBuffer += s + "\n"; + logBuffer += s.append(QLatin1Char('\n')); emit logChanged(logBuffer); } diff --git a/src/common/BasicBlockHighlighter.cpp b/src/common/BasicBlockHighlighter.cpp index 66c01f9f..1917707f 100644 --- a/src/common/BasicBlockHighlighter.cpp +++ b/src/common/BasicBlockHighlighter.cpp @@ -6,8 +6,8 @@ BasicBlockHighlighter::BasicBlockHighlighter() BasicBlockHighlighter::~BasicBlockHighlighter() { - for (BasicBlockIt itr = bbMap.begin(); itr != bbMap.end(); itr++) { - delete itr->second; + for (BasicBlockIt itr = bbMap.begin(); itr != bbMap.end(); ++itr) { + delete itr->second; } } diff --git a/src/common/RichTextPainter.cpp b/src/common/RichTextPainter.cpp index 61438b8b..58605664 100644 --- a/src/common/RichTextPainter.cpp +++ b/src/common/RichTextPainter.cpp @@ -109,7 +109,7 @@ RichTextPainter::List RichTextPainter::fromTextDocument(const QTextDocument &doc List r; for (QTextBlock block = doc.begin(); block != doc.end(); block = block.next()) { - for (QTextBlock::iterator it = block.begin(); it != block.end(); it++) { + for (QTextBlock::iterator it = block.begin(); it != block.end(); ++it) { QTextFragment fragment = it.fragment(); QTextCharFormat format = fragment.charFormat(); diff --git a/src/common/TempConfig.cpp b/src/common/TempConfig.cpp index bc4daec5..5c78174d 100644 --- a/src/common/TempConfig.cpp +++ b/src/common/TempConfig.cpp @@ -6,7 +6,7 @@ TempConfig::~TempConfig() { - for (auto i = resetValues.constBegin(); i != resetValues.constEnd(); i++) { + for (auto i = resetValues.constBegin(); i != resetValues.constEnd(); ++i) { switch (i.value().type()) { case QVariant::String: Core()->setConfig(i.key(), i.value().toString()); diff --git a/src/common/UpdateWorker.cpp b/src/common/UpdateWorker.cpp index a59b3f64..04ac097c 100644 --- a/src/common/UpdateWorker.cpp +++ b/src/common/UpdateWorker.cpp @@ -96,7 +96,7 @@ void UpdateWorker::showUpdateDialog(bool showDontCheckForUpdatesButton) QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + QDir::separator() + getRepositoryFileName(), QString("%1 (*.%1)").arg(getRepositeryExt())); - if (fullFileName != "") { + if (!fullFileName.isEmpty()) { QProgressDialog progressDial(tr("Downloading update..."), tr("Cancel"), 0, 100); diff --git a/src/core/Cutter.cpp b/src/core/Cutter.cpp index 8cb1877b..4d1dda2f 100644 --- a/src/core/Cutter.cpp +++ b/src/core/Cutter.cpp @@ -226,7 +226,7 @@ QString CutterCore::sdbGet(QString path, QString key) if (val && *val) return val; } - return QString(""); + return QString(); } bool CutterCore::sdbSet(QString path, QString key, QString val) @@ -859,7 +859,7 @@ QString CutterCore::getDecompiledCodePDC(RVA addr) bool CutterCore::getR2DecAvailable() { - return cmd("e cmd.pdc=?").split('\n').contains(QStringLiteral("r2dec")); + return cmdList("e cmd.pdc=?").contains(QStringLiteral("r2dec")); } QString CutterCore::getDecompiledCodeR2Dec(RVA addr) @@ -1332,13 +1332,8 @@ bool CutterCore::isGraphEmpty() void CutterCore::getOpcodes() { - QString opcodes = cmd("?O"); - this->opcodes = opcodes.split("\n"); - // Remove the last empty element - this->opcodes.removeLast(); - QString registers = cmd("drp~[1]"); - this->regs = registers.split("\n"); - this->regs.removeLast(); + this->opcodes = cmdList("?O"); + this->regs = cmdList("drp~[1]"); } void CutterCore::setSettings() @@ -1587,7 +1582,7 @@ QList CutterCore::getAllSymbols() SymbolDescription symbol; symbol.vaddr = entry->vaddr; symbol.name = QString("entry") + QString::number(n++); - symbol.bind = ""; + symbol.bind.clear(); symbol.type = "entry"; ret << symbol; } @@ -2333,7 +2328,7 @@ QList CutterCore::getAllSearch(QString search_for, QString sp SearchDescription exp; - exp.code = QString(""); + exp.code.clear(); for (const QJsonValue &value2 : searchObject[RJsonKey::opcodes].toArray()) { QJsonObject gadget = value2.toObject(); exp.code += gadget[RJsonKey::opcode].toString() + "; "; diff --git a/src/core/Cutter.h b/src/core/Cutter.h index c886cf04..59b3131c 100644 --- a/src/core/Cutter.h +++ b/src/core/Cutter.h @@ -56,7 +56,7 @@ public: QString cmdRaw(const QString &str); QJsonDocument cmdj(const char *str); QJsonDocument cmdj(const QString &str) { return cmdj(str.toUtf8().constData()); } - QStringList cmdList(const char *str) { return cmd(str).split('\n', QString::SkipEmptyParts); } + QStringList cmdList(const char *str) { return cmd(str).split(QLatin1Char('\n'), QString::SkipEmptyParts); } QStringList cmdList(const QString &str) { return cmdList(str.toUtf8().constData()); } QString cmdTask(const QString &str); QJsonDocument cmdjTask(const QString &str); diff --git a/src/dialogs/AboutDialog.cpp b/src/dialogs/AboutDialog.cpp index d8924739..e5e1d59d 100644 --- a/src/dialogs/AboutDialog.cpp +++ b/src/dialogs/AboutDialog.cpp @@ -92,7 +92,7 @@ void AboutDialog::on_checkForUpdatesButton_clicked() connect(&updateWorker, &UpdateWorker::checkComplete, &waitDialog, &QProgressDialog::cancel); connect(&updateWorker, &UpdateWorker::checkComplete, [&updateWorker](const QVersionNumber &version, const QString & error) { - if (error != "") { + if (!error.isEmpty()) { QMessageBox::critical(nullptr, tr("Error!"), error); } else { if (version <= UpdateWorker::currentVersionNumber()) { diff --git a/src/dialogs/AttachProcDialog.cpp b/src/dialogs/AttachProcDialog.cpp index 6aa9e384..72d8d404 100644 --- a/src/dialogs/AttachProcDialog.cpp +++ b/src/dialogs/AttachProcDialog.cpp @@ -119,7 +119,7 @@ ProcessBeingAnalysedProxyModel::ProcessBeingAnalysedProxyModel(ProcessModel *sou QString ProcessBeingAnalysedProxyModel::processPathToFilename(const QString &path) const { // removes the arguments and gets filename from the process path - return path.split(" ").first().split("/").last(); + return path.section(QLatin1Char(' '), 0, 0).section(QLatin1Char('/'), -1); } bool ProcessBeingAnalysedProxyModel::filterAcceptsRow(int row, const QModelIndex &parent) const @@ -329,4 +329,4 @@ void AttachProcDialog::on_procBeingAnalyzedView_doubleClicked(const QModelIndex Q_UNUSED(index); accept(); -} \ No newline at end of file +} diff --git a/src/dialogs/EditFunctionDialog.cpp b/src/dialogs/EditFunctionDialog.cpp index 4c1652da..477590d4 100644 --- a/src/dialogs/EditFunctionDialog.cpp +++ b/src/dialogs/EditFunctionDialog.cpp @@ -55,11 +55,11 @@ void EditFunctionDialog::setStackSizeText(const QString &stackSize) ui->stackSizeLineEdit->setText(stackSize); } -void EditFunctionDialog::setCallConList(const QStringList callConList) { +void EditFunctionDialog::setCallConList(const QStringList &callConList) { ui->callConComboBox->addItems(callConList); } -void EditFunctionDialog::setCallConSelected(const QString selected) { +void EditFunctionDialog::setCallConSelected(const QString &selected) { ui->callConComboBox->setCurrentText(selected); } diff --git a/src/dialogs/EditFunctionDialog.h b/src/dialogs/EditFunctionDialog.h index 9e6ca651..ef69e939 100644 --- a/src/dialogs/EditFunctionDialog.h +++ b/src/dialogs/EditFunctionDialog.h @@ -23,8 +23,8 @@ public: void setEndAddrText(const QString &endAddr); QString getStackSizeText(); void setStackSizeText(const QString &stackSize); - void setCallConList(const QStringList callConList); - void setCallConSelected(const QString selected); + void setCallConList(const QStringList &callConList); + void setCallConSelected(const QString &selected); QString getCallConSelected(); private slots: diff --git a/src/dialogs/EditInstructionDialog.cpp b/src/dialogs/EditInstructionDialog.cpp index 67d3a872..1881cbae 100644 --- a/src/dialogs/EditInstructionDialog.cpp +++ b/src/dialogs/EditInstructionDialog.cpp @@ -50,7 +50,7 @@ void EditInstructionDialog::updatePreview(const QString &input) result = Core()->assemble(input).trimmed(); } - if (result.isEmpty() || result.contains("\n")) { + if (result.isEmpty() || result.contains(QLatin1Char('\n'))) { ui->instructionLabel->setText("Unknown Instruction"); } else { ui->instructionLabel->setText(result); diff --git a/src/dialogs/EditVariablesDialog.cpp b/src/dialogs/EditVariablesDialog.cpp index 8d275b44..3706aef1 100644 --- a/src/dialogs/EditVariablesDialog.cpp +++ b/src/dialogs/EditVariablesDialog.cpp @@ -37,7 +37,7 @@ void EditVariablesDialog::applyFields() Core()->cmdRaw(QString("afvt %1 %2").arg(desc.name).arg(ui->typeComboBox->currentText())); - QString newName = ui->nameEdit->text().replace(" ", "_"); + QString newName = ui->nameEdit->text().replace(QLatin1Char(' '), QLatin1Char('_')); if (newName != desc.name) { Core()->cmdRaw(QString("afvn %1 %2").arg(newName).arg(desc.name)); } diff --git a/src/dialogs/LinkTypeDialog.cpp b/src/dialogs/LinkTypeDialog.cpp index f59523fb..4a68fedc 100644 --- a/src/dialogs/LinkTypeDialog.cpp +++ b/src/dialogs/LinkTypeDialog.cpp @@ -91,7 +91,7 @@ QString LinkTypeDialog::findLinkedType(RVA address) // Extract the given type from returned data // TODO: Implement "tlsj" in radare2 or some other function to directly get linked type - QString s = ret.split("\n").first(); + QString s = ret.section(QLatin1Char('\n'), 0, 0); return s.mid(1, s.size() - 2); } diff --git a/src/dialogs/NewFileDialog.cpp b/src/dialogs/NewFileDialog.cpp index 43b190b0..041377f7 100644 --- a/src/dialogs/NewFileDialog.cpp +++ b/src/dialogs/NewFileDialog.cpp @@ -267,9 +267,7 @@ bool NewFileDialog::fillRecentFilesList() // Get stored files // Remove all but the file name - const QString sep = QDir::separator(); - const QStringList name_list = file.split(sep); - const QString name = name_list.last(); + const QString name = file.section(QDir::separator(), -1); // Get file info QFileInfo info(file); diff --git a/src/dialogs/XrefsDialog.cpp b/src/dialogs/XrefsDialog.cpp index d14b9bfe..4821076c 100644 --- a/src/dialogs/XrefsDialog.cpp +++ b/src/dialogs/XrefsDialog.cpp @@ -86,17 +86,12 @@ void XrefsDialog::on_toTreeWidget_itemDoubleClicked(QTreeWidgetItem *item, int c QString XrefsDialog::normalizeAddr(const QString &addr) const { - QString r = addr; - QString base = addr.split("0x")[1].trimmed(); - int len = base.length(); - if (len < 8) { - int padding = 8 - len; - QString zero = "0"; - QString zeroes = zero.repeated(padding); - r = "0x" + zeroes + base; + QString ret = addr; + if (addr.length() < 10) { + ret = ret.mid(3).rightJustified(8, QLatin1Char('0')); + ret.prepend(QLatin1Literal("0x")); } - - return r; + return ret; } void XrefsDialog::setupPreviewFont() @@ -196,7 +191,7 @@ QString XrefsDialog::xrefTypeString(const QString &type) case R_ANAL_REF_TYPE_DATA: return QString("Data"); case R_ANAL_REF_TYPE_NULL: - return QString(""); + return QString(); case R_ANAL_REF_TYPE_STRING: return QString("String"); default: diff --git a/src/menus/DisassemblyContextMenu.cpp b/src/menus/DisassemblyContextMenu.cpp index 54fad1b7..e05b2abc 100644 --- a/src/menus/DisassemblyContextMenu.cpp +++ b/src/menus/DisassemblyContextMenu.cpp @@ -290,8 +290,8 @@ void DisassemblyContextMenu::aboutToShowSlot() // Get the possible offsets using the "tas" command // TODO: add tasj command to radare2 and then use it here - QString ret = Core()->cmd("tas " + memDisp.toString()); - for (QString val: ret.split("\n")) { + QStringList ret = Core()->cmdList("tas " + memDisp.toString()); + for (const QString &val : ret) { if (val.isEmpty()) { continue; } diff --git a/src/plugins/PluginManager.cpp b/src/plugins/PluginManager.cpp index a417aec5..d60de83e 100644 --- a/src/plugins/PluginManager.cpp +++ b/src/plugins/PluginManager.cpp @@ -111,8 +111,7 @@ void PluginManager::loadPythonPlugins(const QDir &directory) } QString moduleName; if (fileName.endsWith(".py")) { - QStringList l = fileName.split(".py"); - moduleName = l[0]; + moduleName = fileName.chopped(3); } else { moduleName = fileName; } diff --git a/src/widgets/BreakpointWidget.cpp b/src/widgets/BreakpointWidget.cpp index 222e332e..a2f8f64c 100644 --- a/src/widgets/BreakpointWidget.cpp +++ b/src/widgets/BreakpointWidget.cpp @@ -191,7 +191,7 @@ void BreakpointWidget::addBreakpointDialog() if (dialog.exec()) { QString bps = dialog.getBreakpoints(); if (!bps.isEmpty()) { - QStringList bpList = bps.split(' ', QString::SkipEmptyParts); + QStringList bpList = bps.split(QLatin1Char(' '), QString::SkipEmptyParts); for (const QString &bp : bpList) { Core()->toggleBreakpoint(bp); } diff --git a/src/widgets/ColorSchemePrefWidget.cpp b/src/widgets/ColorSchemePrefWidget.cpp index 35729f46..7a17dbe5 100644 --- a/src/widgets/ColorSchemePrefWidget.cpp +++ b/src/widgets/ColorSchemePrefWidget.cpp @@ -430,7 +430,7 @@ void ColorSchemePrefWidget::apply() } else { scheme += "ec "; } - scheme += curr.optionName + " rgb:" + curr.color.name().remove("#").toLower() + "\n"; + scheme += curr.optionName + " rgb:" + curr.color.name().remove(QLatin1Char('#')).toLower() + "\n"; } ColorSchemeFileWorker().save(scheme, Config()->getColorTheme()); Config()->setColorTheme(Config()->getColorTheme()); diff --git a/src/widgets/Dashboard.cpp b/src/widgets/Dashboard.cpp index ae0bb41a..0f27f93d 100644 --- a/src/widgets/Dashboard.cpp +++ b/src/widgets/Dashboard.cpp @@ -56,7 +56,7 @@ void Dashboard::updateContents() this->ui->bitsEdit->setText(QString::number(item2["bits"].toDouble())); if (!item2["relro"].isUndefined()) { - QString relro = item2["relro"].toString().split(" ").at(0); + QString relro = item2["relro"].toString().section(QLatin1Char(' '), 0, 0); relro[0] = relro[0].toUpper(); this->ui->relroEdit->setText(relro); } @@ -110,11 +110,10 @@ void Dashboard::updateContents() ui->md5Edit->setText(md5); ui->sha1Edit->setText(sha1); - QString libs = Core()->cmd("il"); - QStringList lines = libs.split("\n", QString::SkipEmptyParts); - if (!lines.isEmpty()) { - lines.removeFirst(); - lines.removeLast(); + QStringList libs = Core()->cmdList("il"); + if (!libs.isEmpty()) { + libs.removeFirst(); + libs.removeLast(); } // dunno: why not label->setText(lines.join("\n")? @@ -130,7 +129,7 @@ void Dashboard::updateContents() } } - for (const QString &lib : lines) { + for (const QString &lib : libs) { QLabel *label = new QLabel(this); label->setText(lib); label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); diff --git a/src/widgets/DebugActions.cpp b/src/widgets/DebugActions.cpp index 59a332b0..dcbb044c 100644 --- a/src/widgets/DebugActions.cpp +++ b/src/widgets/DebugActions.cpp @@ -117,7 +117,7 @@ DebugActions::DebugActions(QToolBar *toolBar, MainWindow *main) : connect(actionStep, &QAction::triggered, Core(), &CutterCore::stepDebug); connect(actionStart, &QAction::triggered, [ = ]() { // check if file is executable before starting debug - QString filename = Core()->getConfig("file.path").split(" ").first(); + QString filename = Core()->getConfig("file.path").section(QLatin1Char(' '), 0, 0); QFileInfo info(filename); if (!Core()->currentlyDebugging && !info.isExecutable()) { QMessageBox msgBox; diff --git a/src/widgets/FunctionsWidget.cpp b/src/widgets/FunctionsWidget.cpp index c011c616..ce816e21 100644 --- a/src/widgets/FunctionsWidget.cpp +++ b/src/widgets/FunctionsWidget.cpp @@ -181,8 +181,10 @@ QVariant FunctionModel::data(const QModelIndex &index, int role) const case Qt::DecorationRole: if (importAddresses->contains(function.offset) && - (nested ? false : index.column() == ImportColumn)) - return QIcon(":/img/icons/import_light.svg"); + (nested ? false : index.column() == ImportColumn)) { + const static QIcon importIcon(":/img/icons/import_light.svg"); + return importIcon; + } return QVariant(); case Qt::FontRole: @@ -225,7 +227,7 @@ QVariant FunctionModel::data(const QModelIndex &index, int role) const } } - const QStringList &summary = Core()->cmd(QString("pdsf @ %1").arg(function.offset)).split("\n", QString::SkipEmptyParts); + const QStringList &summary = Core()->cmdList(QString("pdsf @ %1").arg(function.offset)); const QFont &fnt = Config()->getFont(); QFontMetrics fm{ fnt }; @@ -252,7 +254,7 @@ QVariant FunctionModel::data(const QModelIndex &index, int role) const if (!highlights.isEmpty()) { toolTipContent += tr("
Highlights:
%1
") - .arg(highlights.join("\n").toHtmlEscaped().replace("\n", "
")); + .arg(highlights.join(QLatin1Char('\n')).toHtmlEscaped().replace(QLatin1Char('\n'), "
")); } toolTipContent += ""; return toolTipContent; diff --git a/src/widgets/SdbWidget.cpp b/src/widgets/SdbWidget.cpp index 779621e2..f52712b0 100644 --- a/src/widgets/SdbWidget.cpp +++ b/src/widgets/SdbWidget.cpp @@ -14,7 +14,7 @@ SdbWidget::SdbWidget(MainWindow *main, QAction *action) : { ui->setupUi(this); - path = ""; + path.clear(); connect(Core(), SIGNAL(refreshAll()), this, SLOT(reload())); reload(nullptr); @@ -64,19 +64,19 @@ void SdbWidget::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int colum if (column == 0) { if (item->text(0) == "../") { - int idx = path.lastIndexOf("/"); + int idx = path.lastIndexOf(QLatin1Char('/')); if (idx != -1) { newpath = path.mid(0, idx); } else { - newpath = ""; + newpath.clear(); } reload(newpath); - } else if (item->text(0).indexOf("/") != -1) { - if (path != "") { - newpath = path + "/" + item->text(0).replace("/", ""); + } else if (item->text(0).indexOf(QLatin1Char('/')) != -1) { + if (!path.isEmpty()) { + newpath = path + "/" + item->text(0).remove(QLatin1Char('/')); } else { - newpath = path + item->text(0).replace("/", ""); + newpath = path + item->text(0).remove(QLatin1Char('/')); } // enter directory reload(newpath); diff --git a/src/widgets/SectionsWidget.cpp b/src/widgets/SectionsWidget.cpp index 0831d8bc..42b4fa4c 100644 --- a/src/widgets/SectionsWidget.cpp +++ b/src/widgets/SectionsWidget.cpp @@ -420,12 +420,12 @@ void AddrDockScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) RVA AddrDockScene::getAddrFromPos(int posY, bool seek) { - QHash::const_iterator i = namePosYMap.constBegin(); + QHash::const_iterator it; QHash addrMap = seek ? seekAddrMap : nameAddrMap; QHash addrSizeMap = seek ? seekAddrSizeMap : nameAddrSizeMap; - while (i != namePosYMap.constEnd()) { - QString name = i.key(); - int y = i.value(); + for (it = namePosYMap.constBegin(); it != namePosYMap.constEnd(); ++it) { + QString name = it.key(); + int y = it.value(); int h = nameHeightMap[name]; if (posY >= y && y + h >= posY) { if (h == 0) { @@ -433,7 +433,6 @@ RVA AddrDockScene::getAddrFromPos(int posY, bool seek) } return addrMap[name] + (float)addrSizeMap[name] * ((float)(posY - y) / (float)h); } - i++; } return 0; } @@ -456,17 +455,19 @@ void RawAddrDock::updateDock() int y = 0; int validMinSize = getValidMinSize(); proxyModel->sort(2, Qt::AscendingOrder); - for (int i = 0; i < proxyModel->rowCount(); i++) { + for (int i = 0; i < proxyModel->rowCount(); ++i) { QModelIndex idx = proxyModel->index(i, 0); - QString name = idx.data(SectionsModel::SectionDescriptionRole).value().name; + auto desc = idx.data(SectionsModel::SectionDescriptionRole).value(); - RVA vaddr = idx.data(SectionsModel::SectionDescriptionRole).value().vaddr; - int vsize = idx.data(SectionsModel::SectionDescriptionRole).value().vsize; + QString name = desc.name; + + RVA vaddr = desc.vaddr; + int vsize = desc.vsize; addrDockScene->seekAddrMap[name] = vaddr; addrDockScene->seekAddrSizeMap[name] = vsize; - RVA addr = idx.data(SectionsModel::SectionDescriptionRole).value().paddr; - int size = idx.data(SectionsModel::SectionDescriptionRole).value().size; + RVA addr = desc.paddr; + int size = desc.size; addrDockScene->nameAddrMap[name] = addr; addrDockScene->nameAddrSizeMap[name] = size; diff --git a/src/widgets/VisualNavbar.cpp b/src/widgets/VisualNavbar.cpp index 18541211..734aac23 100644 --- a/src/widgets/VisualNavbar.cpp +++ b/src/widgets/VisualNavbar.cpp @@ -297,7 +297,7 @@ QString VisualNavbar::toolTipForAddress(RVA address) bool first = true; for (const QString §ion : sections) { if (!first) { - ret += "\n"; + ret.append(QLatin1Char('\n')); } else { first = false; }