add tests for saved-errno
This commit is contained in:
parent
c1664610e1
commit
5aff9925ad
|
@ -1,4 +1,5 @@
|
|||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#ifdef USE_THREAD_TEST
|
||||
#include <pthread.h>
|
||||
#endif
|
||||
|
@ -256,3 +257,13 @@ X void* foreign_thread_callback(test_callback_t f,
|
|||
return r;
|
||||
}
|
||||
#endif
|
||||
|
||||
X int check_multiple_of_ten(int v) {
|
||||
int r = v % 10;
|
||||
if (r == 0) {
|
||||
return 0;
|
||||
} else {
|
||||
errno = r;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -552,6 +552,21 @@
|
|||
(define a-bar (bar (malloc 16 'raw)))
|
||||
(free a-bar))
|
||||
|
||||
(let ()
|
||||
;; saved-errno tests
|
||||
(define check-multiple-of-ten
|
||||
(get-ffi-obj 'check_multiple_of_ten test-lib (_fun #:save-errno 'posix _int -> _int)))
|
||||
(test 0 check-multiple-of-ten 40)
|
||||
(test -1 check-multiple-of-ten 42)
|
||||
(test 2 saved-errno)
|
||||
(saved-errno 5)
|
||||
(test 5 saved-errno)
|
||||
;; test saved-errno is thread-local
|
||||
(define errno-from-thread #f)
|
||||
(sync (thread (lambda () (check-multiple-of-ten 17) (set! errno-from-thread (saved-errno)))))
|
||||
(test 5 saved-errno) ;; same as before
|
||||
(test 7 (lambda () errno-from-thread)))
|
||||
|
||||
(delete-test-files)
|
||||
|
||||
(let ()
|
||||
|
|
Loading…
Reference in New Issue
Block a user