[ekiga/gnome-2-26] Fixing crash (bug 597637) in the avahi code
- From: Eugen Dedu <ededu src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [ekiga/gnome-2-26] Fixing crash (bug 597637) in the avahi code
- Date: Thu, 11 Feb 2010 12:45:41 +0000 (UTC)
commit c18347e0204dfb5d25064b3d966cd4059eeb38d8
Author: Eugen Dedu <Eugen Dedu pu-pm univ-fcomte fr>
Date: Thu Feb 11 13:44:41 2010 +0100
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 | 28 +++++++++++++---------------
1 files changed, 13 insertions(+), 15 deletions(-)
---
diff --git a/lib/engine/components/avahi/avahi-heap.cpp b/lib/engine/components/avahi/avahi-heap.cpp
index 6a3a651..0447360 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 (sigc::bind (sigc::mem_fun (this, &Avahi::Heap::remover), 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,17 +350,3 @@ Avahi::Heap::ResolverCallback (AvahiServiceResolver *resolver,
}
}
-bool
-Avahi::Heap::remover (Ekiga::PresentityPtr presentity,
- const std::string name)
-{
- bool result = true;
-
- if (presentity->get_name () == name) {
-
- result = false;
- presentity->removed.emit ();
- }
-
- return result;
-}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]