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;
}
|