Revert "TimeSpan.FromMilliseconds(TimeSpan.MaxValue.TotalMilliseconds) exception...
authorStephen Toub <stoub@microsoft.com>
Thu, 30 Mar 2017 01:30:23 +0000 (21:30 -0400)
committerTarek Mahmoud Sayed <tarekms@microsoft.com>
Thu, 30 Mar 2017 01:30:23 +0000 (18:30 -0700)
This reverts commit 7951bc9accbbf9552d9b5c8105df8f5a32d6c3ab.

src/mscorlib/src/System/TimeSpan.cs

index 23bc5c4..9166656 100644 (file)
@@ -252,10 +252,10 @@ namespace System
                 throw new ArgumentException(SR.Arg_CannotBeNaN);
             Contract.EndContractBlock();
             double tmp = value * scale;
-            double ticks = Math.Round(tmp * TicksPerMillisecond, 0);
-            if ((ticks > Int64.MaxValue) || (ticks < Int64.MinValue))
+            double millis = tmp + (value >= 0 ? 0.5 : -0.5);
+            if ((millis > Int64.MaxValue / TicksPerMillisecond) || (millis < Int64.MinValue / TicksPerMillisecond))
                 throw new OverflowException(SR.Overflow_TimeSpanTooLong);
-            return new TimeSpan((long)ticks);
+            return new TimeSpan((long)millis * TicksPerMillisecond);
         }
 
         public static TimeSpan FromMilliseconds(double value)