[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);