(file) Return to Thread.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/Thread.cpp between version 1.1.2.4 and 1.1.2.7

version 1.1.2.4, 2001/07/31 12:54:35 version 1.1.2.7, 2001/08/16 14:10:46
Line 46 
Line 46 
 void Thread::cleanup_push( void (*routine)(void *), void *parm) throw(IPCException) void Thread::cleanup_push( void (*routine)(void *), void *parm) throw(IPCException)
 { {
   cleanup_handler *cu = new cleanup_handler(routine, parm);   cleanup_handler *cu = new cleanup_handler(routine, parm);
   try { _cleanup.insert_first(cu); }      try
   catch(IPCException& e) { delete cu; throw; }      {
           _cleanup.insert_first(cu);
       }
       catch(IPCException& e)
       {
           e = e;
           delete cu;
           throw;
       }
   return;   return;
 } }
  
 void Thread::cleanup_pop(Boolean execute = true) throw(IPCException)  void Thread::cleanup_pop(Boolean execute) throw(IPCException)
 { {
   cleanup_handler *cu ;   cleanup_handler *cu ;
   try { cu = _cleanup.remove_first() ;}      try
   catch(IPCException& e) { assert(0); }      {
           cu = _cleanup.remove_first() ;
       }
       catch(IPCException& e)
       {
          e = e;
           PEGASUS_ASSERT(0);
       }
   if(execute == true)   if(execute == true)
     cu->execute();     cu->execute();
   delete cu;   delete cu;
Line 71 
Line 86 
 void Thread::exit_self(PEGASUS_THREAD_RETURN exit_code) void Thread::exit_self(PEGASUS_THREAD_RETURN exit_code)
 { {
   // execute the cleanup stack and then return   // execute the cleanup stack and then return
   while( _cleanup.count(); )     while( _cleanup.count() )
      {
          try
          {
              cleanup_pop(true);
          }
          catch(IPCException& e)
   {   {
     try { cleanup_pop(true); }            e = e;
     catch(IPCException& e) { PEGASUS_ASSERT(0) ; break; }            PEGASUS_ASSERT(0);
             break;
          }
   }   }
   _exit_code = exit_code;   _exit_code = exit_code;
      exit_thread(exit_code);
 } }
  
 #endif  
  
   #endif
  
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END
   


Legend:
Removed from v.1.1.2.4  
changed lines
  Added in v.1.1.2.7

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2