[Kde-pim] parseRFCDate/parseISODate - wrong bad date handling (PATCH)
Allen Winter
winter at kde.org
Wed Jul 16 13:43:50 BST 2008
On Wednesday 16 July 2008 07:48:32 David Jarvie wrote:
> On Wednesday 16 July 2008 12:27, masp01 at centrum.cz wrote:
> > Hi,
> >
> > I've found bug in kdepimlibs/syndication/tools.cpp (bugs.kde.org - 166721)
> >
> > description: if string contains date in wrong format, parseRFCDate (or
> > parseISODate) returns 2^32-1
> >
> > result: some apps (akregator) don't know about error, because returned
> > value uint32_t(-1) is not the expected time_t(-1) ( = uint64_t(-1) at
> > least on my computer). This leads to wrong dates being displayed
> >
> > Problem is located between Qt 4 and KDateTime.
> >
> > KDateTime::toTime_t() returns time_t (64bit at least on my computer)
> > but
> > QDateTime::toTime_t() returns uint (32bit)
> >
> > QDateTime's -1 is converted to 4294967295, but error is tested for -1
> >
> > solution: QDateTime's return type should be time_t, not uint
> >
> > fix: Don't test for -1 but do QDateTime/KDateTime::isValid() tests
> >
> >
> > patch to fix this is attached
> >
> >
> > time_t parseISODate(const QString& str)
> > {
> > - time_t res = KDateTime::fromString(str,
> KDateTime::ISODate).toTime_t();
> > - return res != -1 ? res : 0;
> > + const KDateTime kdt = KDateTime::fromString(str, KDateTime::ISODate);
> > + return kdt.isValid() ? kdt.toTime_t() : 0;
> > }
> >
> > time_t parseRFCDate(const QString& str)
> > {
> > - time_t res = KDateTime::fromString(str,
> KDateTime::RFCDate).toTime_t();
> > - return res != -1 ? res : 0;
> > + const KDateTime kdt = KDateTime::fromString(str, KDateTime::RFCDate);
> > + return kdt.isValid() ? kdt.toTime_t() : 0;
> > }
> >
> > time_t parseDate(const QString& str, DateFormat hint)
>
> How about casting the -1 to time_t in the return statements instead:
>
> return res != (time_t)(-1) ? res : 0;
>
I'll take care of committing this fix.
These methods should use uint's instead of time_t's, but I don't think we can
change that now, due to the API freeze. drat.
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/
More information about the kde-pim
mailing list