File tree 2 files changed +10
-2
lines changed
2 files changed +10
-2
lines changed Original file line number Diff line number Diff line change @@ -311,11 +311,13 @@ int64_t TimeUtil::DurationToNanoseconds(const Duration& duration) {
311
311
}
312
312
313
313
int64_t TimeUtil::DurationToMicroseconds (const Duration & duration) {
314
- return RoundTowardZero (DurationToNanoseconds (duration), kNanosPerMicrosecond );
314
+ return DurationToSeconds (duration) * kMicrosPerSecond +
315
+ RoundTowardZero (duration.nanos (), kNanosPerMicrosecond );
315
316
}
316
317
317
318
int64_t TimeUtil::DurationToMilliseconds (const Duration & duration) {
318
- return RoundTowardZero (DurationToNanoseconds (duration), kNanosPerMillisecond );
319
+ return DurationToSeconds (duration) * kMillisPerSecond +
320
+ RoundTowardZero (duration.nanos (), kNanosPerMillisecond );
319
321
}
320
322
321
323
int64_t TimeUtil::DurationToSeconds (const Duration & duration) {
Original file line number Diff line number Diff line change @@ -145,6 +145,12 @@ TEST(TimeUtilTest, DurationIntegerConversion) {
145
145
1 , TimeUtil::DurationToMilliseconds (TimeUtil::MillisecondsToDuration (1 )));
146
146
EXPECT_EQ (-1 , TimeUtil::DurationToMilliseconds (
147
147
TimeUtil::MillisecondsToDuration (-1 )));
148
+ // Test overflow issue
149
+ EXPECT_EQ (315576000000000 , TimeUtil::DurationToMilliseconds (
150
+ TimeUtil::SecondsToDuration (315576000000 )));
151
+ // Test overflow issue
152
+ EXPECT_EQ (315576000000000000 , TimeUtil::DurationToMicroseconds (
153
+ TimeUtil::SecondsToDuration (315576000000 )));
148
154
EXPECT_EQ (1 , TimeUtil::DurationToSeconds (TimeUtil::SecondsToDuration (1 )));
149
155
EXPECT_EQ (-1 , TimeUtil::DurationToSeconds (TimeUtil::SecondsToDuration (-1 )));
150
156
EXPECT_EQ (1 , TimeUtil::DurationToMinutes (TimeUtil::MinutesToDuration (1 )));
You can’t perform that action at this time.
0 commit comments