[ekiga] Fixing crash (bug #597637) in the avahi code
- From: Julien Puydt <jpuydt src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [ekiga] Fixing crash (bug #597637) in the avahi code
- Date: Wed, 7 Oct 2009 05:08:51 +0000 (UTC)
commit 2513b6110b3d842eb2d3863f34bedcbacfe99422
Author: Julien Puydt <jpuydt gnome org>
Date: Wed Oct 7 07:03:23 2009 +0200
Fixing crash (bug #597637) in the avahi code
When removing a disconnecting presentity, we were removing it under an
iterator, which was then invalid!
lib/engine/components/avahi/avahi-heap.cpp | 29 ++++++++++++---------------
1 files changed, 13 insertions(+), 16 deletions(-)
---
diff --git a/lib/engine/components/avahi/avahi-heap.cpp b/lib/engine/components/avahi/avahi-heap.cpp
index 680de69..53c9b4a 100644
--- a/lib/engine/components/avahi/avahi-heap.cpp
+++ b/lib/engine/components/avahi/avahi-heap.cpp
@@ -206,7 +206,19 @@ Avahi::Heap::BrowserCallback (AvahiServiceBrowser *browser,
break;
case AVAHI_BROWSER_REMOVE:
- visit_presentities (boost::bind (&Avahi::Heap::remover, this, _1, name));
+ {
+ bool found;
+ for (iterator iter = begin ();
+ !found && iter != end ();
+ ++iter) {
+
+ if ((*iter)->get_name () == name) {
+
+ found = true;
+ (*iter)->removed ();
+ }
+ }
+ }
break;
case AVAHI_BROWSER_CACHE_EXHAUSTED:
// FIXME: do I care?
@@ -338,18 +350,3 @@ Avahi::Heap::ResolverCallback (AvahiServiceResolver *resolver,
break;
}
}
-
-bool
-Avahi::Heap::remover (Ekiga::PresentityPtr presentity,
- const std::string name)
-{
- bool result = true;
-
- if (presentity->get_name () == name) {
-
- result = false;
- presentity->removed ();
- }
-
- return result;
-}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]