Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Unified Diff: base/time.cc

Issue 10916089: Fixing Time::Max()'s behavior with Time::ToTimeT() and friends. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Scary casting. Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/time.h ('k') | base/time_mac.cc » ('j') | base/time_mac.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/time.cc
diff --git a/base/time.cc b/base/time.cc
index 7055311e80e7d53df843b61dd63a67b816a74faa..de6668a51bff443338419bdeb510e50cdc0b1ecf 100644
--- a/base/time.cc
+++ b/base/time.cc
@@ -74,12 +74,16 @@ Time Time::Max() {
Time Time::FromTimeT(time_t tt) {
if (tt == 0)
return Time(); // Preserve 0 so we can tell it doesn't exist.
+ if (tt == std::numeric_limits<time_t>::max())
+ return Max(); // Max is max.
Mark Mentovai 2012/09/05 15:27:53 Formatting: you have all of these new “max is max”
return Time((tt * kMicrosecondsPerSecond) + kTimeTToMicrosecondsOffset);
}
time_t Time::ToTimeT() const {
- if (us_ == 0)
+ if (is_null())
return 0; // Preserve 0 so we can tell it doesn't exist.
+ if (is_max())
+ return std::numeric_limits<time_t>::max();
return (us_ - kTimeTToMicrosecondsOffset) / kMicrosecondsPerSecond;
}
@@ -87,14 +91,18 @@ time_t Time::ToTimeT() const {
Time Time::FromDoubleT(double dt) {
if (dt == 0 || isnan(dt))
return Time(); // Preserve 0 so we can tell it doesn't exist.
+ if (dt == std::numeric_limits<double>::max())
+ return Max(); // Max is max.
return Time(static_cast<int64>((dt *
static_cast<double>(kMicrosecondsPerSecond)) +
kTimeTToMicrosecondsOffset));
}
double Time::ToDoubleT() const {
- if (us_ == 0)
+ if (is_null())
return 0; // Preserve 0 so we can tell it doesn't exist.
+ if (is_max())
+ return std::numeric_limits<double>::max(); // Max is max.
return (static_cast<double>(us_ - kTimeTToMicrosecondsOffset) /
static_cast<double>(kMicrosecondsPerSecond));
}
@@ -103,15 +111,17 @@ double Time::ToDoubleT() const {
Time Time::FromJsTime(double ms_since_epoch) {
// The epoch is a valid time, so this constructor doesn't interpret
// 0 as the null time.
+ if (ms_since_epoch == std::numeric_limits<double>::max())
+ return Max(); // Max is max.
return Time(static_cast<int64>(ms_since_epoch * kMicrosecondsPerMillisecond) +
kTimeTToMicrosecondsOffset);
}
double Time::ToJsTime() const {
- if (us_ == 0) {
- // Preserve 0 so the invalid result doesn't depend on the platform.
- return 0;
- }
+ if (is_null())
+ return 0; // Preserve 0 so the invalid result doesn't depend on a platform.
Mark Mentovai 2012/09/05 15:27:53 Dunno why you’ve changed “the” to “a.” Seems kinda
Mike West 2012/09/05 20:25:14 80 columns. :) I'll wrap it in {} instead.
+ if (is_max())
+ return std::numeric_limits<double>::max();
return (static_cast<double>(us_ - kTimeTToMicrosecondsOffset) /
kMicrosecondsPerMillisecond);
}
« no previous file with comments | « base/time.h ('k') | base/time_mac.cc » ('j') | base/time_mac.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698