Revision 33aa05c5 src/urt_node.c

View differences:

src/urt_node.c
69 69
    urtCoreSynchronizeNodes(((urt_node_t*)arg));
70 70
  }
71 71

  
72
  while (urtThreadShouldTerminate())
72
  while (!urtThreadShouldTerminate())
73 73
  {
74 74
    urt_osEventMask_t temp = urtEventWait(mask, URT_EVENT_WAIT_ONE, URT_DELAY_INFINITE);
75 75
    if (temp == urtCoreGetEventMask())
......
91 91
  }
92 92
  urtEventUnregister(urtCoreGetEvtSource(), &((urt_node_t*)arg)->listener);
93 93

  
94

  
95 94
  //Terminate all children and siblings
96 95
  urt_osThread_t* threadToTerminate = urtThreadGetSelf()->children;
97 96
  while (threadToTerminate != urtThreadGetSelf() && threadToTerminate != NULL)
......
199 198
  #if (URT_CFG_PUBSUB_PROFILING || URT_CFG_RPC_PROFILING)
200 199
    node->loops = 0;
201 200
  #endif /* URT_CFG_PUBSUB_PROFILING || URT_CFG_RPC_PROFILING */
202
  urt_osMutex_t* mutexTemp = urtCoreGetMutex();
203
  urtMutexLock(mutexTemp);
204
    node->next = urtCoreGetNodes();
205
    urtCoreAddNode(node);
206
  urtMutexUnlock(mutexTemp);
201
  node->next = urtCoreGetNodes();
202
  urtCoreAddNode(node);
207 203
  return;
208 204
}

Also available in: Unified diff