From 7a8424e98e9ba5902d2008717c3311827d1def33 Mon Sep 17 00:00:00 2001 From: peabody124 Date: Tue, 21 Sep 2010 16:36:04 +0000 Subject: [PATCH] Ground/UAVObjectField: Explicitly handle case of bad enum values to avoid crashes. Still shouldn't occur. git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1703 ebee16cc-31ac-478f-84a7-5cbb03baadba --- ground/src/plugins/uavobjects/uavobjectfield.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ground/src/plugins/uavobjects/uavobjectfield.cpp b/ground/src/plugins/uavobjects/uavobjectfield.cpp index 520a17c58..0677ad8e6 100644 --- a/ground/src/plugins/uavobjects/uavobjectfield.cpp +++ b/ground/src/plugins/uavobjects/uavobjectfield.cpp @@ -27,6 +27,7 @@ */ #include "uavobjectfield.h" #include +#include UAVObjectField::UAVObjectField(const QString& name, const QString& units, FieldType type, quint32 numElements, const QStringList& options) { @@ -444,6 +445,11 @@ QVariant UAVObjectField::getValue(quint32 index) { quint8 tmpenum; memcpy(&tmpenum, &data[offset + numBytesPerElement*index], numBytesPerElement); +// Q_ASSERT((tmpenum < options.length()) && (tmpenum >= 0)); // catch bad enum settings + if(tmpenum >= options.length()) { + qDebug() << "Invalid value for" << name; + return QVariant( QString("Bad Value") ); + } return QVariant( options[tmpenum] ); break; }