regIOobject: Added a move constructor
to resolve an issue with the unexpected registration of DimensionedFields constructed from an unregistered temporary field.
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -71,6 +71,22 @@ Foam::regIOobject::regIOobject(const regIOobject& rio)
|
||||
}
|
||||
|
||||
|
||||
Foam::regIOobject::regIOobject(const regIOobject&& rio)
|
||||
:
|
||||
IOobject(rio),
|
||||
registered_(false),
|
||||
ownedByRegistry_(false),
|
||||
watchIndices_(),
|
||||
eventNo_(db().getEvent())
|
||||
{
|
||||
if (rio.registered_)
|
||||
{
|
||||
const_cast<regIOobject&>(rio).checkOut();
|
||||
checkIn();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Foam::regIOobject::regIOobject(const regIOobject& rio, bool registerCopy)
|
||||
:
|
||||
IOobject(rio),
|
||||
|
||||
@ -111,6 +111,10 @@ public:
|
||||
//- Copy constructor
|
||||
regIOobject(const regIOobject&);
|
||||
|
||||
//- Move constructor
|
||||
// Registers copy if the object is registered
|
||||
regIOobject(const regIOobject&&);
|
||||
|
||||
//- Copy constructor, transferring registry registration to copy
|
||||
// if registerCopy is true
|
||||
regIOobject(const regIOobject&, bool registerCopy);
|
||||
|
||||
@ -135,7 +135,7 @@ DimensionedField<Type, GeoMesh>::DimensionedField
|
||||
bool reuse
|
||||
)
|
||||
:
|
||||
regIOobject(df, reuse),
|
||||
regIOobject(df, reuse && df.registered()),
|
||||
Field<Type>(df, reuse),
|
||||
mesh_(df.mesh_),
|
||||
dimensions_(df.dimensions_)
|
||||
@ -148,7 +148,7 @@ DimensionedField<Type, GeoMesh>::DimensionedField
|
||||
DimensionedField<Type, GeoMesh>&& df
|
||||
)
|
||||
:
|
||||
regIOobject(move(df), true),
|
||||
regIOobject(move(df)),
|
||||
Field<Type>(move(df)),
|
||||
mesh_(df.mesh_),
|
||||
dimensions_(move(df.dimensions_))
|
||||
|
||||
@ -720,6 +720,8 @@ Foam::GeometricField<Type, PatchField, GeoMesh>::GeometricField
|
||||
boundaryField_ == tgf().boundaryField_;
|
||||
|
||||
tgf.clear();
|
||||
|
||||
readIfPresent();
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user