From f42163fd847a12bcd94b9b8f3deb919a5094405a Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Wed, 2 Dec 2015 15:54:02 +0000
Subject: [PATCH] BUG: regIOobject: handle overflow correctly

---
 src/OpenFOAM/db/regIOobject/regIOobject.C | 37 +++++++++++++++++------
 1 file changed, 27 insertions(+), 10 deletions(-)

diff --git a/src/OpenFOAM/db/regIOobject/regIOobject.C b/src/OpenFOAM/db/regIOobject/regIOobject.C
index 3a14d5968ec..c8861aa08f8 100644
--- a/src/OpenFOAM/db/regIOobject/regIOobject.C
+++ b/src/OpenFOAM/db/regIOobject/regIOobject.C
@@ -325,7 +325,9 @@ bool Foam::regIOobject::checkOut()
 
 bool Foam::regIOobject::upToDate(const regIOobject& a) const
 {
-    if (a.eventNo() >= eventNo_)
+    label da = a.eventNo()-eventNo_;
+
+    if (da >= 0 && da < labelMax/2)
     {
         return false;
     }
@@ -342,10 +344,14 @@ bool Foam::regIOobject::upToDate
     const regIOobject& b
 ) const
 {
+    label halfLabelMax = labelMax/2;
+    label da = a.eventNo()-eventNo_;
+    label db = b.eventNo()-eventNo_;
+
     if
     (
-        a.eventNo() >= eventNo_
-     || b.eventNo() >= eventNo_
+        (da >= 0 && da < halfLabelMax)
+     || (db >= 0 && db < halfLabelMax)
     )
     {
         return false;
@@ -364,11 +370,16 @@ bool Foam::regIOobject::upToDate
     const regIOobject& c
 ) const
 {
+    label halfLabelMax = labelMax/2;
+    label da = a.eventNo()-eventNo_;
+    label db = b.eventNo()-eventNo_;
+    label dc = c.eventNo()-eventNo_;
+
     if
     (
-        a.eventNo() >= eventNo_
-     || b.eventNo() >= eventNo_
-     || c.eventNo() >= eventNo_
+        (da >= 0 && da < halfLabelMax)
+     || (db >= 0 && db < halfLabelMax)
+     || (dc >= 0 && dc < halfLabelMax)
     )
     {
         return false;
@@ -388,12 +399,18 @@ bool Foam::regIOobject::upToDate
     const regIOobject& d
 ) const
 {
+    label halfLabelMax = labelMax/2;
+    label da = a.eventNo()-eventNo_;
+    label db = b.eventNo()-eventNo_;
+    label dc = c.eventNo()-eventNo_;
+    label dd = d.eventNo()-eventNo_;
+
     if
     (
-        a.eventNo() >= eventNo_
-     || b.eventNo() >= eventNo_
-     || c.eventNo() >= eventNo_
-     || d.eventNo() >= eventNo_
+        (da >= 0 && da < halfLabelMax)
+     || (db >= 0 && db < halfLabelMax)
+     || (dc >= 0 && dc < halfLabelMax)
+     || (dd >= 0 && dd < halfLabelMax)
     )
     {
         return false;
-- 
GitLab