backends/drm: Fix potential use-after-free

When the output is removed, there are legit cases when the connector can
be still accessed.

CCBUG: 457002
This commit is contained in:
Vlad Zahorodnii 2022-07-24 12:12:26 +03:00
parent f0d59b078b
commit 5aef41663a

View file

@ -313,12 +313,12 @@ bool DrmGpu::updateOutputs()
pipeline->revertPendingChanges();
}
for (const auto &output : qAsConst(addedOutputs)) {
removeOutput(output);
const auto it = std::find_if(m_connectors.begin(), m_connectors.end(), [output](const auto &conn) {
return conn.get() == output->connector();
});
Q_ASSERT(it != m_connectors.end());
m_connectors.erase(it);
removeOutput(output);
}
QTimer::singleShot(50, m_platform, &DrmBackend::updateOutputs);
} else {