summaryrefslogtreecommitdiffabout
path: root/kabc
authorulf69 <ulf69>2004-08-19 23:29:05 (UTC)
committer ulf69 <ulf69>2004-08-19 23:29:05 (UTC)
commitd81fbb0a720ba6eb0fbfa1d1eb0748877237a27e (patch) (side-by-side diff)
tree9b723a5c4f7da306036495e35d1863fbee646984 /kabc
parentd9b7a7296b031b3cf3e510a163367b9c4ab42d7a (diff)
downloadkdepimpi-d81fbb0a720ba6eb0fbfa1d1eb0748877237a27e.zip
kdepimpi-d81fbb0a720ba6eb0fbfa1d1eb0748877237a27e.tar.gz
kdepimpi-d81fbb0a720ba6eb0fbfa1d1eb0748877237a27e.tar.bz2
bugfix: memoryleak in vCards during loading of addressbooks
Diffstat (limited to 'kabc') (more/less context) (show whitespace changes)
-rw-r--r--kabc/vcard/ContentLine.cpp31
-rw-r--r--kabc/vcard/VCardEntity.cpp3
-rw-r--r--kabc/vcard/VCardv.cpp23
3 files changed, 51 insertions, 6 deletions
diff --git a/kabc/vcard/ContentLine.cpp b/kabc/vcard/ContentLine.cpp
index 6fa1a8f..0fb5b5d 100644
--- a/kabc/vcard/ContentLine.cpp
+++ b/kabc/vcard/ContentLine.cpp
@@ -59,47 +59,72 @@
#include <VCardContentLine.h>
#include <VCardEntity.h>
#include <VCardEnum.h>
#include <VCardDefines.h>
using namespace VCARD;
ContentLine::ContentLine()
: Entity(),
value_(0)
{
+ paramList_.setAutoDelete( TRUE );
}
ContentLine::ContentLine(const ContentLine & x)
: Entity(x),
group_ (x.group_),
name_ (x.name_),
- paramList_(x.paramList_),
- value_(x.value_->clone())
+/*US paramList_(x.paramList_),*/
+ value_(x.value_->clone()),
+ paramType_(x.paramType_),
+ valueType_(x.valueType_),
+ entityType_(x.entityType_)
{
+ paramList_.setAutoDelete( TRUE );
+
+
+ ParamListIterator it(x.paramList_);
+ for (; it.current(); ++it)
+ {
+ Param *p = new Param;
+ p->setName( it.current()->name() );
+ p->setValue( it.current()->value() );
+ paramList_.append(p);
+ }
+
}
ContentLine::ContentLine(const QCString & s)
: Entity(s),
value_(0)
{
+ paramList_.setAutoDelete( TRUE );
}
ContentLine &
ContentLine::operator = (ContentLine & x)
{
if (*this == x) return *this;
- paramList_ = x.paramList();
+ ParamListIterator it(x.paramList_);
+ for (; it.current(); ++it)
+ {
+ Param *p = new Param;
+ p->setName( it.current()->name() );
+ p->setValue( it.current()->value() );
+ paramList_.append(p);
+ }
+
value_ = x.value_->clone();
Entity::operator = (x);
return *this;
}
ContentLine &
ContentLine::operator = (const QCString & s)
{
Entity::operator = (s);
delete value_;
value_ = 0;
diff --git a/kabc/vcard/VCardEntity.cpp b/kabc/vcard/VCardEntity.cpp
index 0c21e2f..0cd2086 100644
--- a/kabc/vcard/VCardEntity.cpp
+++ b/kabc/vcard/VCardEntity.cpp
@@ -22,34 +22,37 @@
*/
#include <qregexp.h>
#include <VCardDefines.h>
#include <VCardVCardEntity.h>
using namespace VCARD;
VCardEntity::VCardEntity()
: Entity()
{
+ cardList_.setAutoDelete( TRUE );
}
VCardEntity::VCardEntity(const VCardEntity & x)
: Entity(x)
{
+ cardList_.setAutoDelete( TRUE );
}
VCardEntity::VCardEntity(const QCString & s)
: Entity(s)
{
+ cardList_.setAutoDelete( TRUE );
}
VCardEntity &
VCardEntity::operator = (VCardEntity & x)
{
if (*this == x) return *this;
Entity::operator = (x);
return *this;
}
VCardEntity &
diff --git a/kabc/vcard/VCardv.cpp b/kabc/vcard/VCardv.cpp
index 8d271f4..3f0a5e5 100644
--- a/kabc/vcard/VCardv.cpp
+++ b/kabc/vcard/VCardv.cpp
@@ -27,45 +27,62 @@
#include <VCardEntity.h>
#include <VCardVCard.h>
#include <VCardContentLine.h>
#include <VCardRToken.h>
#include <VCardDefines.h>
using namespace VCARD;
VCard::VCard()
: Entity()
{
+ contentLineList_.setAutoDelete( TRUE );
}
VCard::VCard(const VCard & x)
: Entity(x),
- group_(x.group_),
- contentLineList_(x.contentLineList_)
+ group_(x.group_)
{
+ contentLineList_.setAutoDelete( TRUE );
+ //US
+ qDebug("VCard::VCard");
+
+ QPtrListIterator<ContentLine> it(x.contentLineList_);
+ for (; it.current(); ++it) {
+ ContentLine * c = new ContentLine(*it.current());
+ contentLineList_.append(c);
+ }
+
}
VCard::VCard(const QCString & s)
: Entity(s)
{
+ contentLineList_.setAutoDelete( TRUE );
}
VCard &
VCard::operator = (VCard & x)
{
+ //US
+ qDebug("VCard::operator =");
if (*this == x) return *this;
group_ = x.group();
- contentLineList_ = x.contentLineList_;
+ QPtrListIterator<ContentLine> it(x.contentLineList_);
+ for (; it.current(); ++it) {
+ ContentLine * c = new ContentLine(*it.current());
+ contentLineList_.append(c);
+ }
Entity::operator = (x);
return *this;
}
VCard &
VCard::operator = (const QCString & s)
{
Entity::operator = (s);
return *this;
}