Fix Undefined Behavior in LastAddedAreaCache (#211)

This commit is contained in:
Hannes Schulze 2020-06-28 21:07:17 +02:00 committed by GitHub
parent da20405a6a
commit 0225563b46
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1319,9 +1319,9 @@ void CDockContainerWidget::removeDockArea(CDockAreaWidget* area)
internal::hideEmptyParentSplitters(Splitter);
// Remove this area from cached areas
const auto& cache = d->LastAddedAreaCache;
if (auto p = std::find(cache, cache+sizeof(cache)/sizeof(cache[0]), area)) {
d->LastAddedAreaCache[std::distance(cache, p)] = nullptr;
auto p = std::find(std::begin(d->LastAddedAreaCache), std::end(d->LastAddedAreaCache), area);
if (p != std::end(d->LastAddedAreaCache)) {
*p = nullptr;
}
// If splitter has more than 1 widgets, we are finished and can leave