Fix signed-unsigned mismatch with gcc 4.9.0

Android NDK r10d with gcc 4.9.0 fails with:

gglobal/qoperatingsystemversion.cpp: In static member function 'static QOperatingSystemVersion QOperatingSystemVersion::current()':
global/qoperatingsystemversion.cpp:150:25: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
     if (sdk >= 1 && sdk <= sizeof(versions) / sizeof(versions[0])) {

Switch to size_t and store the array index in order to simplify.

Code is new in dev, introduced in 26b2ad5a18

Change-Id: Ia19cfcb9789e225760f4d1a05c91463f4c7c2302
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
bb10
Laszlo Agocs 2016-10-06 11:35:42 +02:00
parent 0d43d4f794
commit dcbff0a9e1
1 changed files with 5 additions and 5 deletions

View File

@ -146,14 +146,14 @@ QOperatingSystemVersion QOperatingSystemVersion::current()
};
// This will give us at least the first 2 version components
const int sdk = static_cast<int>(QJNIObjectPrivate::getStaticField<jint>("android/os/Build$VERSION", "SDK_INT"));
if (sdk >= 1 && sdk <= sizeof(versions) / sizeof(versions[0])) {
version.m_major = versions[sdk - 1][0];
version.m_minor = versions[sdk - 1][1];
const size_t versionIdx = size_t(QJNIObjectPrivate::getStaticField<jint>("android/os/Build$VERSION", "SDK_INT")) - 1;
if (versionIdx < sizeof(versions) / sizeof(versions[0])) {
version.m_major = versions[versionIdx][0];
version.m_minor = versions[versionIdx][1];
}
// API level 6 was exactly version 2.0.1
version.m_micro = sdk == 6 ? 1 : -1;
version.m_micro = versionIdx == 5 ? 1 : -1;
#else
version.m_major = -1;
version.m_minor = -1;