diff options
author | rpj <rpj> | 2000-08-06 12:15:47 +0000 |
---|---|---|
committer | rpj <rpj> | 2000-08-06 12:15:47 +0000 |
commit | 6eb5bba145940501ca972e4243d7417c8120d569 (patch) | |
tree | b7c9a720866312d62611a60f94eae5eb9f1fc968 /pthread.h | |
parent | 55c9717bd8f28349a9fc2bef8d34d894bfe267c9 (diff) |
2000-08-06 Ross Johnson <rpj@special.ise.canberra.edu.au>
* pthread.h: Remove #warning - VC++ doesn't accept it.
2000-08-05 Ross Johnson <rpj@special.ise.canberra.edu.au>
* pthread.h (PtW32CatchAll): Add macro. When compiling
applications using VC++ with C++ EH rather than SEH
'PtW32CatchAll' must be used in place of any 'catch( ... )'
if the application wants pthread cancelation or
pthread_exit() to work.
2000-08-03 Ross Johnson <rpj@special.ise.canberra.edu.au>
* pthread.h: Add a base class Pthread_exception for
library internal exceptions and change the "catch"
re-define macro to use it.
2000-08-02 Ross Johnson <rpj@special.ise.canberra.edu.au>
* GNUmakefile (CFLAGS): Add -mthreads.
Add new targets to generate cpp and asm output.
* sync.c (pthread_join): Remove dead code.
tests:
2000-08-06 Ross Johnson <rpj@special.ise.canberra.edu.au>
* ccl.bat: Add /nologo to remove extraneous output.
* exception1.c (exceptionedThread): Init 'dummy';
put expression into if condition to prevent optimising away;
remove unused variable.
* cancel4.c (mythread): Cast return value to avoid warnings.
* cancel2.c (mythread): Missing #endif.
* condvar9.c (mythread): Cast return value to avoid warnings.
* condvar8.c (mythread): Cast return value to avoid warnings.
* condvar7.c (mythread): Cast return value to avoid warnings.
* cleanup3.c (mythread): Cast return value to avoid warnings.
* cleanup2.c (mythread): Cast return value to avoid warnings.
* cleanup1.c (mythread): Cast return value to avoid warnings.
* condvar5.c (mythread): Cast return value to avoid warnings.
* condvar3.c (mythread): Cast return value to avoid warnings.
* condvar6.c (mythread): Cast return value to avoid warnings.
* condvar4.c (mythread): Cast return value to avoid warnings.
2000-08-05 Ross Johnson <rpj@special.ise.canberra.edu.au>
* cancel2.c: Use PtW32CatchAll macro if defined.
* exception1.c: Use PtW32CatchAll macro if defined.
2000-08-02 Ross Johnson <rpj@special.ise.canberra.edu.au>
* tsd1.c: Fix typecasts of &result [g++ is now very fussy].
* test.h (assert): Return 0's explicitly to allay
g++ errors.
* join2.c: Add explicit typecasts.
* join1.c: Add explicit typecasts.
* join0.c: Add explicit typecasts.
* eyal1.c: Add explicit typecasts.
* count1.c (main): Add type cast to remove g++ parse warning
[gcc-2.95.2 seems to have tightened up on this].
* Makefile (GLANG): Use c++ explicitly.
Remove MSVC sections (was commented out).
Add target to generate cpp output.
Diffstat (limited to 'pthread.h')
-rw-r--r-- | pthread.h | 36 |
1 files changed, 19 insertions, 17 deletions
@@ -978,36 +978,38 @@ DWORD _pthread_get_exception_services_code(void); * Redefine the SEH __except keyword to ensure that applications * propagate our internal exceptions up to the library's internal handlers. */ -#define __except(E) \ - __except((GetExceptionCode() == _pthread_get_exception_services_code()) \ - ? EXCEPTION_CONTINUE_SEARCH : (E)) +#define __except( E ) \ + __except( ( GetExceptionCode() == _pthread_get_exception_services_code() ) \ + ? EXCEPTION_CONTINUE_SEARCH : ( E ) ) #endif /* _MSC_VER && ! __cplusplus */ #ifdef __cplusplus -/* FIXME: This is only required if the library was built using C++EH */ - /* * Internal exceptions */ -class Pthread_exception_cancel {}; -class Pthread_exception_exit {}; +class Pthread_exception {}; +class Pthread_exception_cancel : public Pthread_exception {}; +class Pthread_exception_exit : public Pthread_exception {}; /* * Redefine the C++ catch keyword to ensure that applications * propagate our internal exceptions up to the library's internal handlers. */ -#define catch(E) \ - catch(Pthread_exception_cancel) \ - { \ - throw; \ - } \ - catch(Pthread_exception_exit) \ - { \ - throw; \ - } \ - catch(E) +#ifdef _MSC_VER + /* + * WARNING: Replace any 'catch( ... )' with 'PtW32CatchAll' + * if you want Pthread-Win32 cancelation and pthread_exit to work. + */ +#define PtW32CatchAll \ + catch( Pthread_exception & ) { throw; } \ + catch( ... ) +#else +#define catch( E ) \ + catch( Pthread_exception & ) { throw; } \ + catch( E ) +#endif #endif |