File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -311,11 +311,13 @@ int64_t TimeUtil::DurationToNanoseconds(const Duration& duration) {
311311}
312312
313313int64_t TimeUtil::DurationToMicroseconds (const Duration& duration) {
314- return RoundTowardZero (DurationToNanoseconds (duration), kNanosPerMicrosecond );
314+ return DurationToSeconds (duration) * kMicrosPerSecond +
315+ RoundTowardZero (duration.nanos (), kNanosPerMicrosecond );
315316}
316317
317318int64_t TimeUtil::DurationToMilliseconds (const Duration& duration) {
318- return RoundTowardZero (DurationToNanoseconds (duration), kNanosPerMillisecond );
319+ return DurationToSeconds (duration) * kMillisPerSecond +
320+ RoundTowardZero (duration.nanos (), kNanosPerMillisecond );
319321}
320322
321323int64_t TimeUtil::DurationToSeconds (const Duration& duration) {
Original file line number Diff line number Diff line change @@ -145,6 +145,12 @@ TEST(TimeUtilTest, DurationIntegerConversion) {
145145 1 , TimeUtil::DurationToMilliseconds (TimeUtil::MillisecondsToDuration (1 )));
146146 EXPECT_EQ (-1 , TimeUtil::DurationToMilliseconds (
147147 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 )));
148154 EXPECT_EQ (1 , TimeUtil::DurationToSeconds (TimeUtil::SecondsToDuration (1 )));
149155 EXPECT_EQ (-1 , TimeUtil::DurationToSeconds (TimeUtil::SecondsToDuration (-1 )));
150156 EXPECT_EQ (1 , TimeUtil::DurationToMinutes (TimeUtil::MinutesToDuration (1 )));
You can’t perform that action at this time.
0 commit comments