diff --git a/src/Wt/WDate.C b/src/Wt/WDate.C index 90cf95ae1..841c2c743 100644 --- a/src/Wt/WDate.C +++ b/src/Wt/WDate.C @@ -124,7 +124,10 @@ void WDate::setDate(int year, int month, int day) void WDate::setYmd(int y, int m, int d) { - ymd_ = (y << 16) | ((m & 0xFF) << 8) | (d & 0xFF); + ymd_ = static_cast( + (static_cast(y) << 16) | + ((static_cast(m) & 0xFF) << 8) | + (static_cast(d) & 0xFF)); } bool WDate::isLeapYear(int year) diff --git a/src/Wt/WDate.h b/src/Wt/WDate.h index 8b385ae86..10b345c65 100644 --- a/src/Wt/WDate.h +++ b/src/Wt/WDate.h @@ -162,7 +162,7 @@ class WT_API WDate * * \sa isNull(), WDate(int, int, int), setDate() */ - bool isValid() const { return ymd_ > 1; } + bool isValid() const { return ymd_ != 0 && ymd_ != 1; } /*! \brief Returns the year. * @@ -447,7 +447,7 @@ class WT_API WDate static RegExpInfo formatToRegExp(const WT_USTRING& format); private: - unsigned ymd_; + int ymd_; void setYmd(int year, int month, int day);