From: Christian P. <cp...@us...> - 2005-02-01 16:55:58
|
Update of /cvsroot/pclasses/pclasses2/src/System In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18125/src/System Modified Files: Thread.common.cpp Log Message: Catch exceptions in SpawnedThread and ignore them. Index: Thread.common.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/src/System/Thread.common.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Thread.common.cpp 28 Jan 2005 17:36:12 -0000 1.2 +++ Thread.common.cpp 1 Feb 2005 16:55:44 -0000 1.3 @@ -28,23 +28,32 @@ class SpawnedThread: public Thread { public: SpawnedThread(const Callback& cb, const CallbackArgs& args, Semaphore* sem) - : Thread(true), _callback(cb.clone()), _args(&args), _sem(sem) + : Thread(true), _callback(cb.clone()), _args(args.clone()), _sem(sem) { } protected: int main() { - if(_sem) - _sem->post(); - - _callback->exec(*_args); + Semaphore* sem = _sem; + if(sem) + sem->post(); - if(_sem) - _sem->post(); + try + { + _callback->exec(*_args); + } + catch(...) + { + } delete _callback; + delete _args; delete this; + + if(sem) + sem->post(); + return 0; } |