[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [digikam/frameworks] libs/dmetadata: Fix crash / memory leak
From: Marcel Wiesweg <marcel.wiesweg () gmx ! de>
Date: 2015-09-22 16:00:41
Message-ID: E1ZePzl-00088U-Kv () scm ! kde ! org
[Download RAW message or body]
Git commit 53989aa499f183ab818f24a39be9ac16c11d0c05 by Marcel Wiesweg.
Committed on 22/09/2015 at 16:00.
Pushed by mwiesweg into branch 'frameworks'.
Fix crash / memory leak
Also need to reimplement operator= if classes with d-pointer shall be
copyable. Otherwise, C++ will implement a default d=other.d, copying the
pointer.
No need to implement a copyContent method, C++ does that for us.
M +8 -12 libs/dmetadata/dmetadatasettingscontainer.cpp
M +1 -0 libs/dmetadata/dmetadatasettingscontainer.h
http://commits.kde.org/digikam/53989aa499f183ab818f24a39be9ac16c11d0c05
diff --git a/libs/dmetadata/dmetadatasettingscontainer.cpp \
b/libs/dmetadata/dmetadatasettingscontainer.cpp index 763291d..78c29e8 100644
--- a/libs/dmetadata/dmetadatasettingscontainer.cpp
+++ b/libs/dmetadata/dmetadatasettingscontainer.cpp
@@ -51,15 +51,6 @@ public:
unifyReadWrite = false;
}
- void copyPrivateData(const Private* const other)
- {
- readMappings = other->readMappings;
- readMappings.detach();
- writeMappings = other->writeMappings;
- writeMappings.detach();
- unifyReadWrite = other->unifyReadWrite;
- }
-
public:
QMap<QLatin1String, QList<NamespaceEntry> > readMappings;
@@ -79,13 +70,18 @@ DMetadataSettingsContainer::DMetadataSettingsContainer()
DMetadataSettingsContainer::DMetadataSettingsContainer(const \
DMetadataSettingsContainer& other) : d(new Private)
{
- d->copyPrivateData(other.d);
+ *d = *other.d;
+}
+
+DMetadataSettingsContainer& DMetadataSettingsContainer::operator=(const \
DMetadataSettingsContainer& other) +{
+ *d = *other.d;
+ return *this;
}
DMetadataSettingsContainer::~DMetadataSettingsContainer()
{
- // this line crash application
- //delete d;
+ delete d;
}
void DMetadataSettingsContainer::readFromConfig(KConfigGroup& group)
diff --git a/libs/dmetadata/dmetadatasettingscontainer.h \
b/libs/dmetadata/dmetadatasettingscontainer.h index 01064e6..ae4d539 100644
--- a/libs/dmetadata/dmetadatasettingscontainer.h
+++ b/libs/dmetadata/dmetadatasettingscontainer.h
@@ -158,6 +158,7 @@ public:
DMetadataSettingsContainer();
DMetadataSettingsContainer(const DMetadataSettingsContainer& other);
~DMetadataSettingsContainer();
+ DMetadataSettingsContainer& operator=(const DMetadataSettingsContainer& other);
public:
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic