Hello,

Thank you very much for your help.
That really helped me to solve my issue.
I really appreciate your suggestion on this.

Once again thanks for your help.

Thank You,
Ankit Gandhi.


On Wed, Nov 18, 2009 at 1:16 AM, Ludovico Cavedon <
[email protected]> wrote:

> Hi,
>
> ANKIT GANDHI wrote:
> > for (std::list<Contact>::const_iterator it =
> > _contactList->getContacts().begin();
> >                 it != _contactList->getContacts().end();
> >                 *it++* /*<<-- Suspect of crashing qutecom*/)
> >         {
> >
> >             LOG_INFO("temp log");
> >
> >                 if(it->getContactType()=="Auto")
> >                 {
> >                      LOG_INFO("removing : " + it->getUUID());
> >
> > _contactList->removeContact(*_contactList->getContact(it->getUUID()));
> >                 }
> >          }
> >
> > Now when this for loop executes, first loop it goes well, now when it
> > does it++ and tries to iterate to next contact, qutecom crashes. So can
> > anyone suggest me any idea how can I iterate over the contacts, check
> > some condition of contact and remove those ?
>
> If you remove the contact referenced by "it", the iterator will no
> longer be valid, So you need to increment it before removing the element.
> Something like:
>
> if(it->getContactType()=="Auto")
> {
>  _contactList->removeContact(*_contactList->getContact(it++->getUUID()));
> }
> else
>  ++it;
>
> And remove the increment operation on "it" from the for loop.
>
> HTH,
> Cheers,
> Ludovico
>
_______________________________________________
QuteCom-dev mailing list
[email protected]
http://lists.qutecom.org/mailman/listinfo/qutecom-dev

Reply via email to