common: fix a memory leak after scene->clear(true)

If renderer was null, paints was cleared (count set to zero), but data
was not deleted regardless free boolean.
This commit is contained in:
Michal Maciola 2021-06-16 09:46:36 +02:00 committed by Hermet Park
parent 0df8c00519
commit 24cebf5cc5

View file

@ -173,17 +173,19 @@ struct Scene::Impl
void clear(bool free) void clear(bool free)
{ {
//Clear render target before drawing //Clear render target before drawing
if (!renderer || !renderer->clear()) { if (renderer && renderer->clear()) {
paints.clear(); for (auto paint = paints.data; paint < (paints.data + paints.count); ++paint) {
return; (*paint)->pImpl->dispose(*renderer);
}
renderer = nullptr;
} }
//free paints //free paints
for (auto paint = paints.data; paint < (paints.data + paints.count); ++paint) { if (free) {
(*paint)->pImpl->dispose(*renderer); for (auto paint = paints.data; paint < (paints.data + paints.count); ++paint) {
if (free) delete(*paint); delete(*paint);
}
} }
paints.clear(); paints.clear();
renderer = nullptr;
} }
}; };