summaryrefslogtreecommitdiffabout
path: root/kabc/vcard
authorulf69 <ulf69>2004-08-19 23:29:05 (UTC)
committer ulf69 <ulf69>2004-08-19 23:29:05 (UTC)
commitd81fbb0a720ba6eb0fbfa1d1eb0748877237a27e (patch) (unidiff)
tree9b723a5c4f7da306036495e35d1863fbee646984 /kabc/vcard
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/vcard') (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
@@ -68,21 +68,38 @@ ContentLine::ContentLine()
68 :Entity(), 68 :Entity(),
69 value_(0) 69 value_(0)
70{ 70{
71 paramList_.setAutoDelete( TRUE );
71} 72}
72 73
73ContentLine::ContentLine(const ContentLine & x) 74ContentLine::ContentLine(const ContentLine & x)
74 :Entity(x), 75 :Entity(x),
75 group_ (x.group_), 76 group_ (x.group_),
76 name_ (x.name_), 77 name_ (x.name_),
77 paramList_(x.paramList_), 78 /*US paramList_(x.paramList_),*/
78 value_(x.value_->clone()) 79 value_(x.value_->clone()),
80 paramType_(x.paramType_),
81 valueType_(x.valueType_),
82 entityType_(x.entityType_)
79{ 83{
84 paramList_.setAutoDelete( TRUE );
85
86
87 ParamListIterator it(x.paramList_);
88 for (; it.current(); ++it)
89 {
90 Param *p = new Param;
91 p->setName( it.current()->name() );
92 p->setValue( it.current()->value() );
93 paramList_.append(p);
94 }
95
80} 96}
81 97
82ContentLine::ContentLine(const QCString & s) 98ContentLine::ContentLine(const QCString & s)
83 :Entity(s), 99 :Entity(s),
84 value_(0) 100 value_(0)
85{ 101{
102 paramList_.setAutoDelete( TRUE );
86} 103}
87 104
88 ContentLine & 105 ContentLine &
@@ -90,7 +107,15 @@ ContentLine::operator = (ContentLine & x)
90{ 107{
91 if (*this == x) return *this; 108 if (*this == x) return *this;
92 109
93 paramList_ = x.paramList(); 110 ParamListIterator it(x.paramList_);
111 for (; it.current(); ++it)
112 {
113 Param *p = new Param;
114 p->setName( it.current()->name() );
115 p->setValue( it.current()->value() );
116 paramList_.append(p);
117 }
118
94 value_ = x.value_->clone(); 119 value_ = x.value_->clone();
95 120
96 Entity::operator = (x); 121 Entity::operator = (x);
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
@@ -31,16 +31,19 @@ using namespace VCARD;
31VCardEntity::VCardEntity() 31VCardEntity::VCardEntity()
32 :Entity() 32 :Entity()
33{ 33{
34 cardList_.setAutoDelete( TRUE );
34} 35}
35 36
36VCardEntity::VCardEntity(const VCardEntity & x) 37VCardEntity::VCardEntity(const VCardEntity & x)
37 :Entity(x) 38 :Entity(x)
38{ 39{
40 cardList_.setAutoDelete( TRUE );
39} 41}
40 42
41VCardEntity::VCardEntity(const QCString & s) 43VCardEntity::VCardEntity(const QCString & s)
42 :Entity(s) 44 :Entity(s)
43{ 45{
46 cardList_.setAutoDelete( TRUE );
44} 47}
45 48
46 VCardEntity & 49 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
@@ -36,27 +36,44 @@ using namespace VCARD;
36VCard::VCard() 36VCard::VCard()
37 :Entity() 37 :Entity()
38{ 38{
39 contentLineList_.setAutoDelete( TRUE );
39} 40}
40 41
41VCard::VCard(const VCard & x) 42VCard::VCard(const VCard & x)
42 :Entity(x), 43 :Entity(x),
43 group_(x.group_), 44 group_(x.group_)
44 contentLineList_(x.contentLineList_)
45{ 45{
46 contentLineList_.setAutoDelete( TRUE );
47 //US
48 qDebug("VCard::VCard");
49
50 QPtrListIterator<ContentLine> it(x.contentLineList_);
51 for (; it.current(); ++it) {
52 ContentLine * c = new ContentLine(*it.current());
53 contentLineList_.append(c);
54 }
55
46} 56}
47 57
48VCard::VCard(const QCString & s) 58VCard::VCard(const QCString & s)
49 :Entity(s) 59 :Entity(s)
50{ 60{
61 contentLineList_.setAutoDelete( TRUE );
51} 62}
52 63
53 VCard & 64 VCard &
54VCard::operator = (VCard & x) 65VCard::operator = (VCard & x)
55{ 66{
67 //US
68 qDebug("VCard::operator =");
56 if (*this == x) return *this; 69 if (*this == x) return *this;
57 70
58 group_ = x.group(); 71 group_ = x.group();
59 contentLineList_= x.contentLineList_; 72 QPtrListIterator<ContentLine> it(x.contentLineList_);
73 for (; it.current(); ++it) {
74 ContentLine * c = new ContentLine(*it.current());
75 contentLineList_.append(c);
76 }
60 77
61 Entity::operator = (x); 78 Entity::operator = (x);
62 return *this; 79 return *this;