[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: Re: [PATCH] kdecore: Fix a bug in KDateTime utc offset string parsing.
From: David Jarvie <djarvie () kde ! org>
Date: 2012-10-08 22:52:44
Message-ID: 201210082352.45023.djarvie () kde ! org
[Download RAW message or body]
On Sunday 07 October 2012 21:23:56 Jon Severinsson wrote:
> The sign of the UTC offset was ignored, and an offset of -0500 (New York) would be \
> treated at +0500 (Pakistan). This commit also adds a unit test for UTC offset \
> parsing and comparasion.
> ---
> Hi
>
> When mucking around in the frameworks branch of kdelibs I found a bug in the
> KDateTime string parsing, which appears to be present in master as well as
> every branch from 4.0 to 4.10. I have, however, only run the updated unittest
> using the frameworks branch and Qt5, so someone else should probably test
> on 4.9, 4.10 and/or master before committing it.
>
> Best Regards
> Jon Severinsson
>
> kdecore/date/kdatetime.cpp | 2 +-
> kdecore/tests/kdatetimetest.cpp | 7 +++++++
> 2 filer ändrade, 8 tillägg(+), 1 borttagning(-)
>
> diff --git a/kdecore/date/kdatetime.cpp b/kdecore/date/kdatetime.cpp
> index d4f63ff..df1fc3d 100644
> --- a/kdecore/date/kdatetime.cpp
> +++ b/kdecore/date/kdatetime.cpp
> @@ -2962,7 +2962,7 @@ bool getUTCOffset(const QString &string, int &offset, bool \
> colon, int &result) tzmin += tzhour * 60;
> if (result != NO_NUMBER && result != tzmin)
> return false;
> - result = tzmin;
> + result = sign * tzmin;
> return true;
> }
>
> diff --git a/kdecore/tests/kdatetimetest.cpp b/kdecore/tests/kdatetimetest.cpp
> index e79e9f2..812abc5 100644
> --- a/kdecore/tests/kdatetimetest.cpp
> +++ b/kdecore/tests/kdatetimetest.cpp
> @@ -3807,6 +3807,13 @@ void KDateTimeTest::strings_format()
> QVERIFY(!dt.isValid()); // too early
> QVERIFY(dt.outOfRange());
>
> + dtutc = KDateTime::fromString(QLatin1String("2000-01-01T00:00:00.000+0000"), \
> QLatin1String("%Y-%m-%dT%H:%M%:S%:s%z")); + QVERIFY(dtutc.isValid());
> + dt = KDateTime::fromString(QLatin1String("2000-01-01T05:00:00.000+0500"), \
> QLatin1String("%Y-%m-%dT%H:%M%:S%:s%z")); + QVERIFY(dt.isValid());
> + QVERIFY(dtutc == dt);
> + dt = KDateTime::fromString(QLatin1String("1999-12-31T20:30:00.000-0330"), \
> QLatin1String("%Y-%m-%dT%H:%M%:S%:s%z")); + QVERIFY(dtutc == dt);
>
> // Restore the original local time zone
> if (originalZone.isEmpty())
>
The patches look good to commit. However, can you please move the new tests in \
kdatetimetest.cpp to start at line 3740, before the existing group of tests for UTC \
offsets. This will keep related tests grouped together.
--
David Jarvie.
KDE developer.
KAlarm author -- http://www.astrojar.org.uk/kalarm
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic