From 418ab0643ae518f162a6dfcba2c13a71c1f4ffc3 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Mon, 27 Jun 2005 12:35:14 +0000 Subject: [PATCH] Apparently I can't reuse those references, as it leads to every kind of bugs. I wonder if it's just plain wrong or it's a gcc bug. Minor changes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13292 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/app/Handler.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/kits/app/Handler.cpp b/src/kits/app/Handler.cpp index 531b7820ee..9351574167 100644 --- a/src/kits/app/Handler.cpp +++ b/src/kits/app/Handler.cpp @@ -695,7 +695,8 @@ BHandler::StopWatchingAll(BMessenger messenger) status_t BHandler::StartWatching(BHandler *handler, uint32 what) { - fObserverList ? fObserverList : fObserverList = new _ObserverList; + if (fObserverList == NULL) + fObserverList = new _ObserverList; return fObserverList->StartObserving(handler, what); } @@ -703,8 +704,7 @@ BHandler::StartWatching(BHandler *handler, uint32 what) status_t BHandler::StartWatchingAll(BHandler *handler) { - fObserverList ? fObserverList : fObserverList = new _ObserverList; - return fObserverList->StartObserving(handler, B_OBSERVER_OBSERVE_ALL); + return StartWatching(handler, B_OBSERVER_OBSERVE_ALL); } @@ -734,8 +734,8 @@ BHandler::Perform(perform_code d, void *arg) void BHandler::SendNotices(uint32 what, const BMessage *msg) { - fObserverList ? fObserverList : fObserverList = new _ObserverList; - fObserverList->SendNotices(what, msg); + if (fObserverList != NULL) + fObserverList->SendNotices(what, msg); } @@ -825,24 +825,22 @@ _ObserverList::SendNotices(unsigned long what, BMessage const *message) } vector &messengers = fMessengerMap[what]; - for (uint32 i = 0; i < messengers.size(); ++i) { + for (uint32 i = 0; i < messengers.size(); ++i) messengers[i].SendMessage(copyMsg); - } // We have to send the message also to the handlers // and messengers which were subscribed to ALL events, // since they aren't caught by the above loops. // TODO: cleanup - handlers = fHandlerMap[B_OBSERVER_OBSERVE_ALL]; - for (uint32 i = 0; i < handlers.size(); ++i) { - BMessenger msgr(handlers[i]); + vector &handlersAll = fHandlerMap[B_OBSERVER_OBSERVE_ALL]; + for (uint32 i = 0; i < handlersAll.size(); ++i) { + BMessenger msgr(handlersAll[i]); msgr.SendMessage(copyMsg); } - - messengers = fMessengerMap[B_OBSERVER_OBSERVE_ALL]; - for (uint32 i = 0; i < messengers.size(); ++i) { + + vector &messengersAll = fMessengerMap[B_OBSERVER_OBSERVE_ALL]; + for (uint32 i = 0; i < messengersAll.size(); ++i) messengers[i].SendMessage(copyMsg); - } // Gotta make sure to clean up the annoying temporary ... delete copyMsg;