Comment 6 for bug 697519

Revision history for this message
Jeff Hill (johill-lanl) wrote :

committed this patch

C:\hill\epicsInBazaar\R3.14-mirrorII\src\libCom>bzr diff
Connected (version 2.0, client Twisted)
Authentication (publickey) successful!
Secsh channel 1 opened.
=== modified file 'src/libCom/osi/os/WIN32/osdTime.cpp'
--- src/libCom/osi/os/WIN32/osdTime.cpp 2011-01-15 00:56:49 +0000
+++ src/libCom/osi/os/WIN32/osdTime.cpp 2011-11-10 20:58:14 +0000
@@ -60,6 +60,7 @@
 // for mingw
 #if !defined ( MAXLONGLONG )
 #define MAXLONGLONG LL_CONSTANT(0x7fffffffffffffff)
+#define MINLONGLONG LL_CONSTANT(~0x7fffffffffffffff)
 #endif

 static const LONGLONG epicsEpochInFileTime = LL_CONSTANT(0x01b41e2a18d64000);
@@ -346,7 +347,7 @@
             // counter resolution will more than likely improve over time.
             //
             offset = ( MAXLONGLONG - this->lastPerfCounter )
- + ( curPerfCounter.QuadPart + MAXLONGLONG );
+ + ( curPerfCounter.QuadPart - MINLONGLONG ) + 1;
         }
         if ( offset < MAXLONGLONG / EPICS_TIME_TICKS_PER_SEC ) {
             offset *= EPICS_TIME_TICKS_PER_SEC;
@@ -424,7 +425,7 @@
         // counter resolution will more than likely improve over time.
         //
         perfCounterDiff = ( MAXLONGLONG - this->lastPerfCounterPLL )
- + ( curPerfCounter.QuadPart + MAXLONGLONG );
+ + ( curPerfCounter.QuadPart - MINLONGLONG ) + 1;
     }
     this->lastPerfCounterPLL = curPerfCounter.QuadPart;

@@ -473,7 +474,7 @@
         //
         perfCounterDiffSinceLastFetch =
             ( MAXLONGLONG - this->lastPerfCounter )
- + ( curPerfCounter.QuadPart + MAXLONGLONG );
+ + ( curPerfCounter.QuadPart - MINLONGLONG ) + 1;
     }

     // Update the current estimated time.