summaryrefslogtreecommitdiffabout
path: root/kabc
authorulf69 <ulf69>2004-08-20 01:16:22 (UTC)
committer ulf69 <ulf69>2004-08-20 01:16:22 (UTC)
commitf7a401f03c18ef96eb40dc5540b31cd10880e845 (patch) (unidiff)
treef028d7dd67e34d00d44bd9af27b6e2c3dcd93cef /kabc
parentd39b363278224b969d4c2945d32968c980b5d842 (diff)
downloadkdepimpi-f7a401f03c18ef96eb40dc5540b31cd10880e845.zip
kdepimpi-f7a401f03c18ef96eb40dc5540b31cd10880e845.tar.gz
kdepimpi-f7a401f03c18ef96eb40dc5540b31cd10880e845.tar.bz2
bugfix: fixed a memoryleak in vCards while saving contacts
Diffstat (limited to 'kabc') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/vcard/VCardEntity.cpp9
-rw-r--r--kabc/vcardformatimpl.cpp4
2 files changed, 10 insertions, 3 deletions
diff --git a/kabc/vcard/VCardEntity.cpp b/kabc/vcard/VCardEntity.cpp
index 0cd2086..5fca3bc 100644
--- a/kabc/vcard/VCardEntity.cpp
+++ b/kabc/vcard/VCardEntity.cpp
@@ -72,51 +72,58 @@ VCardEntity::operator == (VCardEntity & x)
72VCardEntity::~VCardEntity() 72VCardEntity::~VCardEntity()
73{ 73{
74} 74}
75 75
76 void 76 void
77VCardEntity::_parse() 77VCardEntity::_parse()
78{ 78{
79 vDebug("parse"); 79 vDebug("parse");
80 QCString s(strRep_); 80 QCString s(strRep_);
81 81
82 int i = s.find(QRegExp("BEGIN:VCARD", false)); 82 int i = s.find(QRegExp("BEGIN:VCARD", false));
83 83
84 while (i != -1) { 84 while (i != -1) {
85 85
86 i = s.find(QRegExp("BEGIN:VCARD", false), 11); 86 i = s.find(QRegExp("BEGIN:VCARD", false), 11);
87 87
88 QCString cardStr(s.left(i)); 88 QCString cardStr(s.left(i));
89 89
90 VCard * v = new VCard(cardStr); 90 VCard * v = new VCard(cardStr);
91 91
92 cardList_.append(v); 92 cardList_.append(v);
93 93
94 v->parse(); 94 v->parse();
95 95
96 s.remove(0, i); 96 s.remove(0, i);
97 } 97 }
98} 98}
99 99
100 void 100 void
101VCardEntity::_assemble() 101VCardEntity::_assemble()
102{ 102{
103 VCardListIterator it(cardList_); 103 VCardListIterator it(cardList_);
104 104
105 for (; it.current(); ++it) 105 for (; it.current(); ++it)
106 strRep_ += it.current()->asString() + "\r\n"; // One CRLF for luck. 106 strRep_ += it.current()->asString() + "\r\n"; // One CRLF for luck.
107} 107}
108 108
109 VCardList & 109 VCardList &
110VCardEntity::cardList() 110VCardEntity::cardList()
111{ 111{
112 parse(); 112 parse();
113 return cardList_; 113 return cardList_;
114} 114}
115 115
116 void 116 void
117VCardEntity::setCardList(const VCardList & l) 117VCardEntity::setCardList(const VCardList & l)
118{ 118{
119 parse(); 119 parse();
120 cardList_ = l; 120 //UScardList_ = l;
121 VCardListIterator it(l);
122
123 for (; it.current(); ++it) {
124 VCard* v = new VCard(*it.current());
125 cardList_.append(v);
126 }
127
121} 128}
122 129
diff --git a/kabc/vcardformatimpl.cpp b/kabc/vcardformatimpl.cpp
index bd9a57b..bffaa64 100644
--- a/kabc/vcardformatimpl.cpp
+++ b/kabc/vcardformatimpl.cpp
@@ -238,98 +238,98 @@ bool VCardFormatImpl::loadAddressee( Addressee& addressee, VCard *v )
238 addressee.setSecrecy( readClassValue( cl ) ); 238 addressee.setSecrecy( readClassValue( cl ) );
239 break; 239 break;
240 240
241 case EntityKey: 241 case EntityKey:
242 addressee.insertKey( readKeyValue( cl ) ); 242 addressee.insertKey( readKeyValue( cl ) );
243 break; 243 break;
244 244
245 case EntityPhoto: 245 case EntityPhoto:
246 addressee.setPhoto( readPictureValue( cl, EntityPhoto, addressee ) ); 246 addressee.setPhoto( readPictureValue( cl, EntityPhoto, addressee ) );
247 break; 247 break;
248 248
249 case EntityLogo: 249 case EntityLogo:
250 addressee.setLogo( readPictureValue( cl, EntityLogo, addressee ) ); 250 addressee.setLogo( readPictureValue( cl, EntityLogo, addressee ) );
251 break; 251 break;
252 252
253 case EntityAgent: 253 case EntityAgent:
254 addressee.setAgent( readAgentValue( cl ) ); 254 addressee.setAgent( readAgentValue( cl ) );
255 break; 255 break;
256 256
257 case EntitySound: 257 case EntitySound:
258 addressee.setSound( readSoundValue( cl, addressee ) ); 258 addressee.setSound( readSoundValue( cl, addressee ) );
259 break; 259 break;
260 260
261 default: 261 default:
262 kdDebug(5700) << "VCardFormat::load(): Unsupported entity: " 262 kdDebug(5700) << "VCardFormat::load(): Unsupported entity: "
263 << int( type ) << ": " << cl->asString() << endl; 263 << int( type ) << ": " << cl->asString() << endl;
264 break; 264 break;
265 } 265 }
266 } 266 }
267 267
268 for( cl = contentLines.first(); cl; cl = contentLines.next() ) { 268 for( cl = contentLines.first(); cl; cl = contentLines.next() ) {
269 EntityType type = cl->entityType(); 269 EntityType type = cl->entityType();
270 if ( type == EntityLabel ) { 270 if ( type == EntityLabel ) {
271 int type = readAddressParam( cl ); 271 int type = readAddressParam( cl );
272 Address address = addressee.address( type ); 272 Address address = addressee.address( type );
273 if ( address.isEmpty() ) 273 if ( address.isEmpty() )
274 address.setType( type ); 274 address.setType( type );
275 275
276 address.setLabel( QString::fromUtf8( cl->value()->asString() ) ); 276 address.setLabel( QString::fromUtf8( cl->value()->asString() ) );
277 addressee.insertAddress( address ); 277 addressee.insertAddress( address );
278 } 278 }
279 } 279 }
280 280
281 return true; 281 return true;
282} 282}
283 283
284void VCardFormatImpl::saveAddressee( const Addressee &addressee, VCard *v, bool intern ) 284void VCardFormatImpl::saveAddressee( const Addressee &addressee, VCard *v, bool intern )
285{ 285{
286 ContentLine cl; 286//US ContentLine cl;
287 QString value; 287//US QString value;
288 288
289 addTextValue( v, EntityName, addressee.name() ); 289 addTextValue( v, EntityName, addressee.name() );
290 addTextValue( v, EntityUID, addressee.uid() ); 290 addTextValue( v, EntityUID, addressee.uid() );
291 addTextValue( v, EntityFullName, addressee.formattedName() ); 291 addTextValue( v, EntityFullName, addressee.formattedName() );
292 292
293 QStringList emails = addressee.emails(); 293 QStringList emails = addressee.emails();
294 QStringList::ConstIterator it4; 294 QStringList::ConstIterator it4;
295 for( it4 = emails.begin(); it4 != emails.end(); ++it4 ) { 295 for( it4 = emails.begin(); it4 != emails.end(); ++it4 ) {
296 addTextValue( v, EntityEmail, *it4 ); 296 addTextValue( v, EntityEmail, *it4 );
297 } 297 }
298 298
299 QStringList customs = addressee.customs(); 299 QStringList customs = addressee.customs();
300 QStringList::ConstIterator it5; 300 QStringList::ConstIterator it5;
301 for( it5 = customs.begin(); it5 != customs.end(); ++it5 ) { 301 for( it5 = customs.begin(); it5 != customs.end(); ++it5 ) {
302 addCustomValue( v, *it5 ); 302 addCustomValue( v, *it5 );
303 } 303 }
304 304
305 addTextValue( v, EntityURL, addressee.url().url() ); 305 addTextValue( v, EntityURL, addressee.url().url() );
306 306
307 addNValue( v, addressee ); 307 addNValue( v, addressee );
308 308
309 addTextValue( v, EntityNickname, addressee.nickName() ); 309 addTextValue( v, EntityNickname, addressee.nickName() );
310 addTextValue( v, EntityMailer, addressee.mailer() ); 310 addTextValue( v, EntityMailer, addressee.mailer() );
311 addTextValue( v, EntityTitle, addressee.title() ); 311 addTextValue( v, EntityTitle, addressee.title() );
312 addTextValue( v, EntityRole, addressee.role() ); 312 addTextValue( v, EntityRole, addressee.role() );
313 addTextValue( v, EntityOrganisation, addressee.organization() ); 313 addTextValue( v, EntityOrganisation, addressee.organization() );
314 addTextValue( v, EntityNote, addressee.note() ); 314 addTextValue( v, EntityNote, addressee.note() );
315 addTextValue( v, EntityProductID, addressee.productId() ); 315 addTextValue( v, EntityProductID, addressee.productId() );
316 addTextValue( v, EntitySortString, addressee.sortString() ); 316 addTextValue( v, EntitySortString, addressee.sortString() );
317 317
318 Address::List addresses = addressee.addresses(); 318 Address::List addresses = addressee.addresses();
319 Address::List::ConstIterator it3; 319 Address::List::ConstIterator it3;
320 for( it3 = addresses.begin(); it3 != addresses.end(); ++it3 ) { 320 for( it3 = addresses.begin(); it3 != addresses.end(); ++it3 ) {
321 addAddressValue( v, *it3 ); 321 addAddressValue( v, *it3 );
322 addLabelValue( v, *it3 ); 322 addLabelValue( v, *it3 );
323 } 323 }
324 324
325 PhoneNumber::List phoneNumbers = addressee.phoneNumbers(); 325 PhoneNumber::List phoneNumbers = addressee.phoneNumbers();
326 PhoneNumber::List::ConstIterator it2; 326 PhoneNumber::List::ConstIterator it2;
327 for( it2 = phoneNumbers.begin(); it2 != phoneNumbers.end(); ++it2 ) { 327 for( it2 = phoneNumbers.begin(); it2 != phoneNumbers.end(); ++it2 ) {
328 addTelephoneValue( v, *it2 ); 328 addTelephoneValue( v, *it2 );
329 } 329 }
330 330
331 Key::List keys = addressee.keys(); 331 Key::List keys = addressee.keys();
332 Key::List::ConstIterator it6; 332 Key::List::ConstIterator it6;
333 for( it6 = keys.begin(); it6 != keys.end(); ++it6 ) { 333 for( it6 = keys.begin(); it6 != keys.end(); ++it6 ) {
334 addKeyValue( v, *it6 ); 334 addKeyValue( v, *it6 );
335 } 335 }