java-topology/defects/krita-0002/patch/krita-0002.patch

28 lines
1.3 KiB
Diff

# UNDF: UNDF-2026-000001217
--- a/plugins/extensions/resourcemanager/dlg_create_bundle.cpp
+++ b/plugins/extensions/resourcemanager/dlg_create_bundle.cpp
@@ -185,9 +185,14 @@ bool DlgCreateBundle::putResourcesInTheBundle(KoResourceBundleSP bundle)
QList<int> selectedResourcesIds = m_pageResourceChooser->getSelectedResourcesIds();
QStack<int> allResourcesIds;
+ // Parallel QSet for O(1) dedup — QStack::contains is O(N), causing O(K^2) for K resources.
+ QSet<int> seenResourceIds;
Q_FOREACH(int id, selectedResourcesIds) {
allResourcesIds << id;
+ seenResourceIds.insert(id);
}
@@ -239,8 +244,9 @@ bool DlgCreateBundle::putResourcesInTheBundle(KoResourceBundleSP bundle)
KoResourceSP resource = linkedResource.resource();
if (!resource) {
qWarning() << "WARNING: DlgCreateBundle::putResourcesInTheBundle couldn't fetch a linked resource" << linkedResource.signature();
continue;
}
- if (!allResourcesIds.contains(resource->resourceId())) {
+ if (!seenResourceIds.contains(resource->resourceId())) {
+ seenResourceIds.insert(resource->resourceId());
allResourcesIds.append(resource->resourceId());
}
}