Index: sources/view/settings/VSettings.cpp =================================================================== diff -u -r8f6ecb60abf6d47d4554cfd3019ca496d79b6f69 -ra84120f4c6d438b4b506a0303806d37c7dcb5615 --- sources/view/settings/VSettings.cpp (.../VSettings.cpp) (revision 8f6ecb60abf6d47d4554cfd3019ca496d79b6f69) +++ sources/view/settings/VSettings.cpp (.../VSettings.cpp) (revision a84120f4c6d438b4b506a0303806d37c7dcb5615) @@ -216,11 +216,12 @@ initConnectionsSettings(); } -VSettings::TKeysList VSettings::updateReplacements(const QString &vGroup, const QStringList &vKeys) +VSettings::TKeysList VSettings::updateReplacements(const QString &vGroup, + const QStringList &vKeys) { TKeysList keysList; for ( quint16 keyIndex = 0; keyIndex < vKeys.count(); keyIndex++ ) { - QRegExp regx("\\{\\s*\\d+\\s*:\\s*\\d+\\s*:\\s*\\w*\\s*:\\s*\\d*\\s*\\}"); + QRegExp regx("\\{\\s*\\d+\\s*:\\s*\\d+\\s*:\\s*\\w+\\s*:\\s*\\d+\\s*\\}"); QString key = vKeys[keyIndex]; int replacementCount = key.count(regx); QStringList keyList; @@ -232,10 +233,20 @@ keyList += ""; // value placeholder key.remove(0, pos + regx.matchedLength()); QStringList lst = blk.split(":"); - quint16 id = lst[0].toUInt(); - quint16 ix = lst[1].toUInt(); - QString ex = lst[2] ; - quint16 rd = lst[3].toUInt(); + if ( lst.size() != 4 ) + continue; + + bool okId = false; + bool okIx = false; + bool okRd = false; + + quint16 id = lst[0].trimmed().toUInt(&okId); + quint16 ix = lst[1].trimmed().toUInt(&okIx); + QString ex = lst[2].trimmed(); + quint16 rd = lst[3].trimmed().toUInt(&okRd); + + if ( ! okId || ! okIx || ! okRd ) + continue; TLocation loc; loc.group = vGroup ; loc.keyIndex = keyIndex ;