From dcbff0a9e10ebea0ed33d3c867f17ea561fc73b4 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Thu, 6 Oct 2016 11:35:42 +0200 Subject: [PATCH] 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 26b2ad5a181eab7ad04ba819004bcc619c24147b Change-Id: Ia19cfcb9789e225760f4d1a05c91463f4c7c2302 Reviewed-by: Marc Mutz --- src/corelib/global/qoperatingsystemversion.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/corelib/global/qoperatingsystemversion.cpp b/src/corelib/global/qoperatingsystemversion.cpp index 14dc109b3e..ffc51cd432 100644 --- a/src/corelib/global/qoperatingsystemversion.cpp +++ b/src/corelib/global/qoperatingsystemversion.cpp @@ -146,14 +146,14 @@ QOperatingSystemVersion QOperatingSystemVersion::current() }; // This will give us at least the first 2 version components - const int sdk = static_cast(QJNIObjectPrivate::getStaticField("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("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;