Changed the loops in BHandler::_SendNotices() and ::_ValidateHandlers().
See also r20183. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21331 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -682,14 +682,15 @@ ObserverList::_ValidateHandlers(uint32 what)
|
|||||||
vector<const BHandler *>& handlers = fHandlerMap[what];
|
vector<const BHandler *>& handlers = fHandlerMap[what];
|
||||||
vector<const BHandler *>::iterator iterator = handlers.begin();
|
vector<const BHandler *>::iterator iterator = handlers.begin();
|
||||||
|
|
||||||
for (; iterator != handlers.end(); iterator++) {
|
while (iterator != handlers.end()) {
|
||||||
BMessenger target(*iterator);
|
BMessenger target(*iterator);
|
||||||
if (!target.IsValid())
|
if (!target.IsValid()) {
|
||||||
|
iterator++;
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
handlers.erase(iterator);
|
|
||||||
iterator--;
|
|
||||||
Add(target, what);
|
Add(target, what);
|
||||||
|
handlers.erase(iterator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -704,13 +705,14 @@ ObserverList::_SendNotices(uint32 what, BMessage* message)
|
|||||||
vector<BMessenger>& messengers = fMessengerMap[what];
|
vector<BMessenger>& messengers = fMessengerMap[what];
|
||||||
vector<BMessenger>::iterator iterator = messengers.begin();
|
vector<BMessenger>::iterator iterator = messengers.begin();
|
||||||
|
|
||||||
for (; iterator != messengers.end(); iterator++) {
|
while (iterator != messengers.end()) {
|
||||||
if (!(*iterator).IsValid()) {
|
if (!(*iterator).IsValid()) {
|
||||||
messengers.erase(iterator);
|
messengers.erase(iterator);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
(*iterator).SendMessage(message);
|
(*iterator).SendMessage(message);
|
||||||
|
iterator++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user