[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[vidalia-svn] r1737: Fix a bug that's been around since 0.0.1: actually remove ob (in trunk: . src/control)



Author: edmanm
Date: 2007-05-13 03:24:19 -0400 (Sun, 13 May 2007)
New Revision: 1737

Modified:
   trunk/
   trunk/src/control/torevents.cpp
   trunk/src/control/torevents.h
Log:
 r1839@adrastea:  edmanm | 2007-05-13 03:28:44 -0400
 Fix a bug that's been around since 0.0.1: actually remove objects from the
 list of targets for an event, instead of from a copy of the list. (Three
 cheers for the more verbose logging from my previous commit. Hip hip
 hoo...ah, nevermind.)



Property changes on: trunk
___________________________________________________________________
 svk:merge ticket from /vidalia/local/trunk [r1839] on 54b3572a-7227-0410-958f-53ecd705b71a

Modified: trunk/src/control/torevents.cpp
===================================================================
--- trunk/src/control/torevents.cpp	2007-05-13 07:24:11 UTC (rev 1736)
+++ trunk/src/control/torevents.cpp	2007-05-13 07:24:19 UTC (rev 1737)
@@ -46,16 +46,17 @@
   }
 }
 
-/** Removes an event and object from the event list */
+/** Removes <b>obj</b> from the list of target objects for event <b>e</b>. */
 void
 TorEvents::remove(TorEvent e, QObject *obj)
 {
-  int i;
-  if ((i = _eventList.values(e).indexOf(obj)) >= 0) {
-    _eventList.values(e).removeAt(i);
-    if (_eventList.values(e).size() == 0) {
-      _eventList.remove(e);
+  QMultiHash<TorEvent,QObject*>::iterator i = _eventList.find(e);
+  while (i != _eventList.end() && i.key() == e) {
+    if (i.value() == obj) {
+      _eventList.erase(i);
+      break;
     }
+    i++;
   }
 }
 

Modified: trunk/src/control/torevents.h
===================================================================
--- trunk/src/control/torevents.h	2007-05-13 07:24:11 UTC (rev 1736)
+++ trunk/src/control/torevents.h	2007-05-13 07:24:19 UTC (rev 1737)
@@ -64,7 +64,8 @@
 
   /** Adds an event and interested object to the event list */
   void add(TorEvent event, QObject *obj);
-  /** Removes an event and object from the event list */
+  /** Removes <b>obj</b> from the list of target objects for event 
+   * <b>e</b>. */
   void remove(TorEvent event, QObject *obj);
   /** Returns true if an event has any registered handlers */
   bool contains(TorEvent event);