Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Development
openfoam
Commits
6f17d46b
Commit
6f17d46b
authored
May 01, 2019
by
Mark Olesen
Browse files
BUG: avoid memory leak caused by IOobjectList::filterObjects (
#1286
)
parent
29f40170
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/OpenFOAM/db/IOobjectList/IOobjectListTemplates.C
View file @
6f17d46b
...
...
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2018
-2019
OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
...
...
@@ -622,11 +622,16 @@ Foam::label Foam::IOobjectList::filterClasses
const
bool
pruning
)
{
// return HashPtrTable<IOobject>::filterValues
// (
// [&](const IOobject* io){ return pred(io->headerClassName()); },
// pruning
// );
// This is like
// return HashPtrTable<IOobject>::filterValues
// (
// [&](const IOobject* io){ return pred(io->headerClassName()); },
// pruning
// );
// which is really
// return HashTable<IOobject*>::filterValues
//
// except that it does not leak
label
changed
=
0
;
...
...
@@ -654,7 +659,29 @@ Foam::label Foam::IOobjectList::filterObjects
const
bool
pruning
)
{
return
HashPtrTable
<
IOobject
>::
filterKeys
(
pred
,
pruning
);
// This is like
// return HashPtrTable<IOobject>::filterKeys(pred, pruning);
// which is really
// return HashTable<IOobject*>::filterKeys(pred, pruning);
//
// except that it does not leak
label
changed
=
0
;
for
(
iterator
iter
=
begin
();
iter
!=
end
();
++
iter
)
{
// Matches? either prune (pruning) or keep (!pruning)
if
(
(
pred
(
iter
.
key
())
?
pruning
:
!
pruning
)
&&
erase
(
iter
)
)
{
++
changed
;
}
}
return
changed
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment