From ad1f99ff71d35250291fd911295a8f7ad3ac09a7 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 16 Apr 2010 15:43:28 +0200 Subject: [PATCH] BUG: IOstream::compressionEnum() used Switch::switchType incorrectly - use enhanced Switch constructor and the new valid() method to avoid potential pitfalls of using Switch::switchType directly. --- src/OpenFOAM/db/IOstreams/IOstreams/IOstream.C | 4 ++-- src/OpenFOAM/primitives/bools/Switch/Switch.C | 3 +-- src/OpenFOAM/primitives/bools/Switch/SwitchIO.C | 12 ++++++------ 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/OpenFOAM/db/IOstreams/IOstreams/IOstream.C b/src/OpenFOAM/db/IOstreams/IOstreams/IOstream.C index 478080a099..90b8613b83 100644 --- a/src/OpenFOAM/db/IOstreams/IOstreams/IOstream.C +++ b/src/OpenFOAM/db/IOstreams/IOstreams/IOstream.C @@ -61,9 +61,9 @@ Foam::IOstream::compressionType Foam::IOstream::compressionEnum(const word& compression) { // get Switch (bool) value, but allow it to fail - Switch::switchType sw = Switch::asEnum(compression, true); + Switch sw(compression, true); - if (sw != Switch::INVALID) + if (sw.valid()) { return sw ? IOstream::COMPRESSED : IOstream::UNCOMPRESSED; } diff --git a/src/OpenFOAM/primitives/bools/Switch/Switch.C b/src/OpenFOAM/primitives/bools/Switch/Switch.C index 4def20a77c..f2f627dcbd 100644 --- a/src/OpenFOAM/primitives/bools/Switch/Switch.C +++ b/src/OpenFOAM/primitives/bools/Switch/Switch.C @@ -83,7 +83,7 @@ Foam::Switch::switchType Foam::Switch::asEnum << abort(FatalError); } - return INVALID; + return Switch::INVALID; } @@ -115,7 +115,6 @@ bool Foam::Switch::asBool return false; } - return (sw & 0x1); } diff --git a/src/OpenFOAM/primitives/bools/Switch/SwitchIO.C b/src/OpenFOAM/primitives/bools/Switch/SwitchIO.C index f55b49bc91..69614cf442 100644 --- a/src/OpenFOAM/primitives/bools/Switch/SwitchIO.C +++ b/src/OpenFOAM/primitives/bools/Switch/SwitchIO.C @@ -53,9 +53,13 @@ Foam::Istream& Foam::operator>>(Istream& is, Switch& s) else if (t.isWord()) { // allow invalid values, but catch after for correct error message - Switch::switchType sw = Switch::asEnum(t.wordToken(), true); + Switch sw(t.wordToken(), true); - if (sw == Switch::INVALID) + if (sw.valid()) + { + s.switch_ = sw.switch_; + } + else { is.setBad(); FatalIOErrorIn("operator>>(Istream&, Switch&)", is) @@ -64,10 +68,6 @@ Foam::Istream& Foam::operator>>(Istream& is, Switch& s) return is; } - else - { - s.switch_ = sw; - } } else {