Skip to content
This repository has been archived by the owner on May 25, 2021. It is now read-only.

Commit

Permalink
added Math.Max(1, *) to preven the devide by zero exception in issue #48
Browse files Browse the repository at this point in the history
  • Loading branch information
nberardi committed Aug 21, 2012
1 parent 27b16f3 commit efd5d8c
Showing 1 changed file with 5 additions and 10 deletions.
15 changes: 5 additions & 10 deletions src/System/DateTimePrecise.cs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -72,24 +72,19 @@ public DateTime GetUtcNow()
if (stopWatchTicks < immutable.ObservedTicks + _synchronizePeriodStopwatchTicks) if (stopWatchTicks < immutable.ObservedTicks + _synchronizePeriodStopwatchTicks)
{ {
return immutable.BaseTime.AddTicks((( return immutable.BaseTime.AddTicks(((
stopWatchTicks - immutable.ObservedTicks) * ClockTickFrequency) / ( stopWatchTicks - immutable.ObservedTicks) * ClockTickFrequency) / (immutable.StopWatchFrequency));
immutable.StopWatchFrequency));
} }
else else
{ {
var utc = DateTime.UtcNow; var utc = DateTime.UtcNow;


DateTime tBaseNew = immutable.BaseTime.AddTicks((( DateTime tBaseNew = immutable.BaseTime.AddTicks(((stopWatchTicks - immutable.ObservedTicks) * ClockTickFrequency) / (immutable.StopWatchFrequency));
stopWatchTicks - immutable.ObservedTicks) * ClockTickFrequency) / (
immutable.StopWatchFrequency));


_immutable = new DateTimePreciseSafeImmutable( _immutable = new DateTimePreciseSafeImmutable(
utc, utc,
tBaseNew, tBaseNew,
stopWatchTicks, stopWatchTicks,
((stopWatchTicks - immutable.ObservedTicks) * ClockTickFrequency * 2) / ((stopWatchTicks - immutable.ObservedTicks) * ClockTickFrequency * 2) / (3 * utc.Ticks - 2 * immutable.ObservedTime.Ticks - tBaseNew.Ticks));
(utc.Ticks - immutable.ObservedTime.Ticks + utc.Ticks +
utc.Ticks - tBaseNew.Ticks - immutable.ObservedTime.Ticks));


return tBaseNew; return tBaseNew;
} }
Expand All @@ -113,14 +108,14 @@ public DateTimeOffset GetNowOffset()
return new DateTimeOffset(GetNow()); return new DateTimeOffset(GetNow());
} }


private sealed class DateTimePreciseSafeImmutable private sealed struct DateTimePreciseSafeImmutable
{ {
public DateTimePreciseSafeImmutable(DateTime observedTime, DateTime baseTime, long observedTicks, long stopWatchFrequency) public DateTimePreciseSafeImmutable(DateTime observedTime, DateTime baseTime, long observedTicks, long stopWatchFrequency)
{ {
ObservedTime = observedTime; ObservedTime = observedTime;
BaseTime = baseTime; BaseTime = baseTime;
ObservedTicks = observedTicks; ObservedTicks = observedTicks;
StopWatchFrequency = stopWatchFrequency; StopWatchFrequency = Math.Max(1, stopWatchFrequency);
} }


public readonly DateTime ObservedTime; public readonly DateTime ObservedTime;
Expand Down

0 comments on commit efd5d8c

Please sign in to comment.