28 lines
1.3 KiB
Diff
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());
|
|
}
|
|
}
|