diff --git a/src/widgets/widgets/qmdiarea.cpp b/src/widgets/widgets/qmdiarea.cpp index bed4f450d0f..fdb3e6a1074 100644 --- a/src/widgets/widgets/qmdiarea.cpp +++ b/src/widgets/widgets/qmdiarea.cpp @@ -2327,7 +2327,9 @@ void QMdiArea::showEvent(QShowEvent *showEvent) Q_D(QMdiArea); if (!d->pendingRearrangements.isEmpty()) { bool skipPlacement = false; - foreach (Rearranger *rearranger, d->pendingRearrangements) { + // Take a copy because d->rearrange() may modify d->pendingRearrangements + const auto pendingRearrange = d->pendingRearrangements; + for (Rearranger *rearranger : pendingRearrange) { // If this is the case, we don't have to lay out pending child windows // since the rearranger will find a placement for them. if (rearranger->type() != Rearranger::IconTiler && !skipPlacement)