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