diff options
-rw-r--r-- | src/plugins/android/androidconfigurations.cpp | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 3f89ad2c9a..f8ae71aacf 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -610,33 +610,50 @@ QVector<AndroidDeviceInfo> AndroidConfig::androidVirtualDevices() const AndroidDeviceInfo dev; for (int i = 0; i < avds.size(); i++) { - QString line = QLatin1String(avds[i]); + QString line = QLatin1String(avds.at(i)); if (!line.contains(QLatin1String("Name:"))) continue; - dev.serialNumber = line.mid(line.indexOf(QLatin1Char(':')) + 2).trimmed(); + int index = line.indexOf(QLatin1Char(':')) + 2; + if (index >= line.size()) + break; + dev.serialNumber = line.mid(index).trimmed(); + dev.sdk = -1; + dev.cpuAbi.clear(); ++i; for (; i < avds.size(); ++i) { line = QLatin1String(avds[i]); if (line.contains(QLatin1String("---------"))) break; if (line.contains(QLatin1String("Target:"))) { - QString tmp = line.mid(line.lastIndexOf(QLatin1Char(' '))).remove(QLatin1Char(')')).trimmed(); + int lastIndex = line.lastIndexOf(QLatin1Char(' ')); + if (lastIndex == -1) // skip line + break; + QString tmp = line.mid(lastIndex).remove(QLatin1Char(')')).trimmed(); if (tmp == QLatin1String("L")) // HACK for android-L preview dev.sdk = 20; else dev.sdk = tmp.toInt(); } - if (line.contains(QLatin1String("Tag/ABI:"))) - dev.cpuAbi = QStringList() << line.mid(line.lastIndexOf(QLatin1Char('/')) +1); - else if (line.contains(QLatin1String("ABI:"))) - dev.cpuAbi = QStringList() << line.mid(line.lastIndexOf(QLatin1Char(' '))).trimmed(); + if (line.contains(QLatin1String("Tag/ABI:"))) { + int lastIndex = line.lastIndexOf(QLatin1Char('/')) + 1; + if (lastIndex >= line.size()) + break; + dev.cpuAbi = QStringList() << line.mid(lastIndex); + } else if (line.contains(QLatin1String("ABI:"))) { + int lastIndex = line.lastIndexOf(QLatin1Char(' ')) + 1; + if (lastIndex >= line.size()) + break; + dev.cpuAbi = QStringList() << line.mid(lastIndex).trimmed(); + } } // armeabi-v7a devices can also run armeabi code if (dev.cpuAbi == QStringList(QLatin1String("armeabi-v7a"))) dev.cpuAbi << QLatin1String("armeabi"); dev.state = AndroidDeviceInfo::OkState; dev.type = AndroidDeviceInfo::Emulator; + if (dev.cpuAbi.isEmpty() || dev.sdk == -1) + continue; devices.push_back(dev); } Utils::sort(devices, androidDevicesLessThan); |