Simplify QDate::addDays() impementation
authorJon Severinsson <jon@severinsson.net>
Tue, 9 Oct 2012 13:44:42 +0000 (15:44 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Wed, 10 Oct 2012 06:45:22 +0000 (08:45 +0200)
No need to check for overflows since the change to qint64. as less than
half the qint64 range is a valid julian day, any overflow will be
detected as an invalid date anyway.

Change-Id: I3b6cad24e245ed9418c5804484f846b0b692153a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
src/corelib/tools/qdatetime.cpp

index 0e3da78..cbdd183 100644 (file)
@@ -917,20 +917,9 @@ QDate QDate::addDays(qint64 ndays) const
     if (isNull())
         return QDate();
 
-    QDate d;
-    quint64 diff = 0;
-
-    // this is basically "d.jd = jd + ndays" with checks for integer overflow
-    // Due to limits on minJd() and maxJd() we know diff will never overflow
-    if (ndays >= 0)
-        diff = maxJd() - jd;
-    else
-        diff = jd - minJd();
-
-    if ((quint64)qAbs(ndays) <= diff)
-        d.jd = jd + ndays;
-
-    return d;
+    // Due to limits on minJd() and maxJd() we know that any overflow
+    // will be invalid and caught by fromJulianDay().
+    return fromJulianDay(jd + ndays);
 }
 
 /*!