diff options
-rw-r--r-- | tests/ChangeLog | 5 | ||||
-rw-r--r-- | tests/cancel2.c | 8 | ||||
-rw-r--r-- | tests/exception3.c | 21 | ||||
-rw-r--r-- | tests/exit2.c | 2 | ||||
-rw-r--r-- | tests/exit3.c | 2 |
5 files changed, 18 insertions, 20 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog index 784c329..c4120ea 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -2,6 +2,11 @@ * create3.c: Removed; testing a condition that is not in the library's scope and was more trouble than it was worth. + * cancel2.c: Ensure this test only runs for Structured or C++ EH. + * exit2.c: Shorten Sleep() time. + * exit3.c: Likewise. + * exception3.c: Likewise; make terminate routine consistent for all + build environments. 2011-07-02 Ross Johnson <ross dot johnson at homemail dot com dot au> diff --git a/tests/cancel2.c b/tests/cancel2.c index 83cb6eb..0eff4a0 100644 --- a/tests/cancel2.c +++ b/tests/cancel2.c @@ -72,7 +72,10 @@ * - Process returns non-zero exit status. */ -#if defined(_MSC_VER) || defined(__cplusplus) +/* + * EXCEPTION_CONTINUE_SEARCH is used to identify that we are using SEH + */ +#if defined(EXCEPTION_CONTINUE_SEARCH) || defined(__cplusplus) #include "test.h" @@ -242,9 +245,12 @@ main() #else /* defined(_MSC_VER) || defined(__cplusplus) */ +#include <stdio.h> + int main() { + fprintf(stderr, "Test N/A for this compiler environment.\n"); return 0; } diff --git a/tests/exception3.c b/tests/exception3.c index 3e8b9e7..65bcdbe 100644 --- a/tests/exception3.c +++ b/tests/exception3.c @@ -101,7 +101,7 @@ terminateFunction () { assert(pthread_mutex_lock(&caughtLock) == 0); caught++; -#if 1 +#if 0 { FILE * fp = fopen("pthread.log", "a"); fprintf(fp, "Caught = %d\n", caught); @@ -110,18 +110,6 @@ terminateFunction () #endif assert(pthread_mutex_unlock(&caughtLock) == 0); -#if defined(__MINGW32__) - /* - * Seems to work. That is, threads exit and the process - * continues. Note: need to check correct POSIX behaviour. - * My guess is: this is because of the - * eh incompatibility between g++ and MSVC++. That is, - * an exception thrown in g++ code doesn't propogate - * through or to MSVC++ code, and vice versa. - * Applications should probably not depend on this. - */ - pthread_exit((void *) 0); -#else /* * Notes from the MSVC++ manual: * 1) A term_func() should call exit(), otherwise @@ -129,13 +117,12 @@ terminateFunction () * abort() raises SIGABRT. The default signal handler * for all signals terminates the calling program with * exit code 3. - * 2) A term_func() must not throw an exception. Therefore + * 2) A term_func() must not throw an exception. Dev: Therefore * term_func() should not call pthread_exit() if an - * an exception-using version of pthreads-win32 library + * exception-using version of pthreads-win32 library * is being used (i.e. either pthreadVCE or pthreadVSE). */ exit(0); -#endif } void * @@ -172,7 +159,7 @@ main() assert(pthread_create(&et[i], NULL, exceptionedThread, NULL) == 0); } - Sleep(5000); + Sleep(NUMTHREADS * 100); assert(caught == NUMTHREADS); diff --git a/tests/exit2.c b/tests/exit2.c index 196139a..b9f785e 100644 --- a/tests/exit2.c +++ b/tests/exit2.c @@ -58,7 +58,7 @@ main(int argc, char * argv[]) assert(pthread_create(&t, NULL, func, (void *) NULL) == 0); - Sleep(1000); + Sleep(100); return 0; } diff --git a/tests/exit3.c b/tests/exit3.c index a8b12c8..18859e4 100644 --- a/tests/exit3.c +++ b/tests/exit3.c @@ -61,7 +61,7 @@ main(int argc, char * argv[]) assert(pthread_create(&id[i], NULL, func, (void *)(size_t)i) == 0); } - Sleep(1000); + Sleep(400); /* Success. */ return 0; |