From 78cde1bfd94521bbe4972f31a79c959d0990ea77 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Tue, 26 Nov 2019 13:35:10 +0100 Subject: Fix mis-guided init() in default QAndroidTimeZonePrivate constructor It set the time-zone member sensibly to the default zone, but then called init("UTC"), which over-wrote that default with UTC. This had no visible effect (as the default-constructed object is only used to access methods that (though virtual) are effectively static), but was needlessly complicated. Tidied up systemTimeZoneId() at the same time. Change-Id: I897aff16855c28487a1029bef50c75ebc1ff5b55 Reviewed-by: Thiago Macieira --- src/corelib/time/qtimezoneprivate_android.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/corelib/time/qtimezoneprivate_android.cpp b/src/corelib/time/qtimezoneprivate_android.cpp index 8de41ed3ce..5cb8155dcc 100644 --- a/src/corelib/time/qtimezoneprivate_android.cpp +++ b/src/corelib/time/qtimezoneprivate_android.cpp @@ -54,9 +54,10 @@ QT_BEGIN_NAMESPACE QAndroidTimeZonePrivate::QAndroidTimeZonePrivate() : QTimeZonePrivate() { - // start with system time zone - androidTimeZone = QJNIObjectPrivate::callStaticObjectMethod("java.util.TimeZone", "getDefault", "()Ljava/util/TimeZone;"); - init("UTC"); + // Keep in sync with systemTimeZoneId(): + androidTimeZone = QJNIObjectPrivate::callStaticObjectMethod( + "java.util.TimeZone", "getDefault", "()Ljava/util/TimeZone;"); + m_id = androidTimeZone.callObjectMethod("getID", "()Ljava/lang/String;").toString().toUtf8(); } // Create a named time zone @@ -227,11 +228,10 @@ QTimeZonePrivate::Data QAndroidTimeZonePrivate::previousTransition(qint64 before QByteArray QAndroidTimeZonePrivate::systemTimeZoneId() const { - QJNIObjectPrivate androidSystemTimeZone = QJNIObjectPrivate::callStaticObjectMethod("java.util.TimeZone", "getDefault", "()Ljava/util/TimeZone;"); - QJNIObjectPrivate systemTZIdAndroid = androidSystemTimeZone.callObjectMethod("getID"); - QByteArray systemTZid = systemTZIdAndroid.toString().toUtf8(); - - return systemTZid; + // Keep in sync with default constructor: + QJNIObjectPrivate androidSystemTimeZone = QJNIObjectPrivate::callStaticObjectMethod( + "java.util.TimeZone", "getDefault", "()Ljava/util/TimeZone;"); + return androidSystemTimeZone.callObjectMethod("getID").toString().toUtf8(); } QList QAndroidTimeZonePrivate::availableTimeZoneIds() const -- cgit v1.2.3