[Orxonox-commit 2089] r6805 - code/trunk/src/modules/objects/triggers

dafrick at orxonox.net dafrick at orxonox.net
Thu Apr 29 15:26:43 CEST 2010


Author: dafrick
Date: 2010-04-29 15:26:43 +0200 (Thu, 29 Apr 2010)
New Revision: 6805

Modified:
   code/trunk/src/modules/objects/triggers/MultiTrigger.cc
Log:
Possible bug fix.


Modified: code/trunk/src/modules/objects/triggers/MultiTrigger.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/MultiTrigger.cc	2010-04-29 12:21:57 UTC (rev 6804)
+++ code/trunk/src/modules/objects/triggers/MultiTrigger.cc	2010-04-29 13:26:43 UTC (rev 6805)
@@ -114,15 +114,22 @@
         std::queue<MultiTriggerState*>* queue  = this->letTrigger();
         if(queue != NULL)
             COUT(4) << "MultiTrigger &" << this << ": " << queue->size() << " new states to state queue." << std::endl;
-        while(queue != NULL && queue->size() > 0)
+        
+        if(queue != NULL)
         {
-            //TODO: Be more efficient, Don't delete a state and create a new one immediately after that. Reuse!
-            MultiTriggerState* state = queue->front();
-            this->addState(state->bTriggered & this->isModeTriggered(state->originator), state->originator);
-            queue->pop();
-            delete state;
+            while(queue->size() > 0)
+            {
+                //TODO: Be more efficient, Don't delete a state and create a new one immediately after that. Reuse!
+                MultiTriggerState* state = queue->front();
+                if(state == NULL)
+                    break;
+                    
+                this->addState(state->bTriggered & this->isModeTriggered(state->originator), state->originator);
+                queue->pop();
+                delete state;
+            }
+            delete queue;
         }
-        delete queue;
 
         if (this->stateQueue_.size() > 0)
         {




More information about the Orxonox-commit mailing list