aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner
diff options
context:
space:
mode:
authorVikas Pachdha <vikas.pachdha@qt.io>2020-04-28 22:05:05 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2020-04-29 08:37:07 +0000
commit662c224bab0e2e9a8054cf58671ff0d350713f82 (patch)
tree22be5d0bdfbd3d78800adadb366ad8d66ecd4b4f /src/plugins/qmldesigner
parentc01fef0a78e61cbf11b044ef342e5fb9d4e2b150 (diff)
Fix crash with sorting library items
Strict weak ordering relation for the comparison was not followed. Using shared_ptr and removing QSharedData. The entry data is shared between instances Task-number: QDS-2011 Change-Id: Idfcd23b2d458f9c7cada47180cb6ab3b4b090416 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src/plugins/qmldesigner')
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp2
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/itemlibrarysectionmodel.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h9
-rw-r--r--src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp21
4 files changed, 6 insertions, 28 deletions
diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp
index 020369708a..57f0d7ee94 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp
+++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp
@@ -289,7 +289,7 @@ void ItemLibraryModel::sortSections()
int nullPointerSectionCount = m_sections.removeAll(QPointer<ItemLibrarySection>());
QTC_ASSERT(nullPointerSectionCount == 0,;);
auto sectionSort = [](ItemLibrarySection *first, ItemLibrarySection *second) {
- return QString::localeAwareCompare(first->sortingName(), second->sortingName()) < 1;
+ return QString::localeAwareCompare(first->sortingName(), second->sortingName()) < 0;
};
std::sort(m_sections.begin(), m_sections.end(), sectionSort);
diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarysectionmodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarysectionmodel.cpp
index 6f7e57763c..413ef7f3e8 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarysectionmodel.cpp
+++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarysectionmodel.cpp
@@ -91,7 +91,7 @@ void ItemLibrarySectionModel::sortItems()
int nullPointerSectionCount = m_itemList.removeAll(QPointer<ItemLibraryItem>());
QTC_ASSERT(nullPointerSectionCount == 0,;);
auto itemSort = [](ItemLibraryItem *first, ItemLibraryItem *second) {
- return QString::localeAwareCompare(first->itemName(), second->itemName()) < 1;
+ return QString::localeAwareCompare(first->itemName(), second->itemName()) < 0;
};
std::sort(m_itemList.begin(), m_itemList.end(), itemSort);
diff --git a/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h b/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h
index 6e70169a6a..58d2413787 100644
--- a/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h
+++ b/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h
@@ -29,7 +29,7 @@
#include "propertycontainer.h"
#include <QPointer>
-#include <QSharedDataPointer>
+#include <memory>
namespace QmlDesigner {
@@ -55,7 +55,7 @@ class QMLDESIGNERCORE_EXPORT ItemLibraryEntry
public:
ItemLibraryEntry();
- ~ItemLibraryEntry();
+ ~ItemLibraryEntry() = default;
QString name() const;
TypeName typeName() const;
@@ -69,9 +69,6 @@ public:
QString qmlSource() const;
QString requiredImport() const;
- ItemLibraryEntry(const ItemLibraryEntry &other);
- ItemLibraryEntry& operator=(const ItemLibraryEntry &other);
-
using Property = QmlDesigner::PropertyContainer;
QList<Property> properties() const;
@@ -89,7 +86,7 @@ public:
void addHints(const QHash<QString, QString> &hints);
private:
- QSharedDataPointer<Internal::ItemLibraryEntryData> m_data;
+ std::shared_ptr<Internal::ItemLibraryEntryData> m_data;
};
class QMLDESIGNERCORE_EXPORT ItemLibraryInfo : public QObject
diff --git a/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp
index 7b3059247f..e76fe609f0 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp
@@ -35,12 +35,9 @@ namespace QmlDesigner {
namespace Internal {
-class ItemLibraryEntryData : public QSharedData
+class ItemLibraryEntryData
{
public:
- ItemLibraryEntryData()
- {}
-
QString name;
TypeName typeName;
QString category;
@@ -57,20 +54,6 @@ public:
} // namespace Internal
-//
-// ItemLibraryEntry
-//
-
-ItemLibraryEntry::ItemLibraryEntry(const ItemLibraryEntry &other) = default;
-
-ItemLibraryEntry& ItemLibraryEntry::operator=(const ItemLibraryEntry &other)
-{
- if (this !=&other)
- m_data = other.m_data;
-
- return *this;
-}
-
void ItemLibraryEntry::setTypeIcon(const QIcon &icon)
{
m_data->typeIcon = icon;
@@ -96,8 +79,6 @@ ItemLibraryEntry::ItemLibraryEntry() : m_data(new Internal::ItemLibraryEntryData
m_data->name.clear();
}
-ItemLibraryEntry::~ItemLibraryEntry() = default;
-
QString ItemLibraryEntry::name() const
{
return m_data->name;