From 5ce342d2db11d26246fb5cc481f9a2e6a33ef764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Tue, 20 Jan 2026 13:11:08 +0100 Subject: [PATCH] prevent crash in packet log view with invalid values --- .../Device/LibreVNA/devicepacketlogview.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/devicepacketlogview.cpp b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/devicepacketlogview.cpp index 16f964a..10a3c1b 100644 --- a/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/devicepacketlogview.cpp +++ b/Software/PC_Application/LibreVNA-GUI/Device/LibreVNA/devicepacketlogview.cpp @@ -114,9 +114,14 @@ void DevicePacketLogView::addEntry(const DevicePacketLog::LogEntry &e) "ClearFlash", "PerformFirmwareUpdate", "Nack", "Reference", "Generator", "SpectrumAnalyzerSettings", "SpectrumAnalyzerResult", "RequestDeviceInfo", "RequestSourceCal", "RequestReceiverCal", "SourceCalPoint", "ReceiverCalPoint", "SetIdle", "RequestFrequencyCorrection", "FrequencyCorrection", "RequestDeviceConfiguration", - "DeviceConfiguration", "DeviceStatus", "RequestDeviceStatus", "VNADatapoint", "SetTrigger", "ClearTrigger"}; + "DeviceConfiguration", "DeviceStatus", "RequestDeviceStatus", "VNADatapoint", "SetTrigger", "ClearTrigger", + "StopStatusUpdates", "StartStatusUpdates", "InitiateSweep", "PerformAction", "ResetDeviceConfiguration"}; - item->setData(3, Qt::DisplayRole, "Type "+QString::number((int)e.p->type)+"("+packetNames[(int)e.p->type]+")"); + if(int(e.p->type) < packetNames.size()) { + item->setData(3, Qt::DisplayRole, "Type "+QString::number((int)e.p->type)+"("+packetNames[(int)e.p->type]+")"); + } else { + item->setData(3, Qt::DisplayRole, "Type "+QString::number((int)e.p->type)+"(Unknown)"); + } auto addDouble = [=](QTreeWidgetItem *parent, QString name, double value, QString unit = "", int precision = 8) { auto subitem = new QTreeWidgetItem; subitem->setData(2, Qt::DisplayRole, name); @@ -138,7 +143,11 @@ void DevicePacketLogView::addEntry(const DevicePacketLog::LogEntry &e) auto addEnum = [=](QTreeWidgetItem *parent, QString name, int value, QStringList names) { auto subitem = new QTreeWidgetItem; subitem->setData(2, Qt::DisplayRole, name); - subitem->setData(3, Qt::DisplayRole, names[value]); + if(value < names.size()) { + subitem->setData(3, Qt::DisplayRole, names[value]); + } else { + subitem->setData(3, Qt::DisplayRole, "Invalid setting (value="+QString::number(value)+")"); + } parent->addChild(subitem); }; auto addString = [=](QTreeWidgetItem *parent, QString name, QString value) {