add tests for saved-errno
This commit is contained in:
parent
c1664610e1
commit
5aff9925ad
|
@ -1,4 +1,5 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <errno.h>
|
||||||
#ifdef USE_THREAD_TEST
|
#ifdef USE_THREAD_TEST
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -256,3 +257,13 @@ X void* foreign_thread_callback(test_callback_t f,
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
#endif
|
#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)))
|
(define a-bar (bar (malloc 16 'raw)))
|
||||||
(free a-bar))
|
(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)
|
(delete-test-files)
|
||||||
|
|
||||||
(let ()
|
(let ()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user