From 38d717e98e24fcd444103df33a277e6e3d0e423b Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 21 Feb 2018 13:15:04 -0700 Subject: [PATCH] fix "foreign-test.rktl" to work on Windows --- .../tests/racket/foreign-test.rktl | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/foreign-test.rktl b/pkgs/racket-test-core/tests/racket/foreign-test.rktl index c046f04026..f594e81408 100644 --- a/pkgs/racket-test-core/tests/racket/foreign-test.rktl +++ b/pkgs/racket-test-core/tests/racket/foreign-test.rktl @@ -541,11 +541,21 @@ (memcpy p #"hi, all!" 8) (test #"hi, all!" cast p _pointer (_bytes o 8)) (test #"hi, all!" cast p _pointer (_bytes/nul-terminated o 8))) -(let* ([strdup (get-ffi-obj 'strdup #f (_fun _bytes/nul-terminated -> _pointer))] +(let* ([strdup (get-ffi-obj (if (eq? 'windows (system-type)) + '_strdup + 'strdup) + (if (eq? 'windows (system-type)) + (ffi-lib "msvcrt.dll") + #f) + (_fun _bytes/nul-terminated -> _pointer))] [p (strdup #"howdy...")]) (test #"howdy..." cast p _pointer _bytes) (test #"howdy..." cast p _pointer _bytes/nul-terminated) - (free p)) + (let ([free (if (eq? 'windows (system-type)) + ;; get `free` consistent with `_strdup`: + (get-ffi-obj 'free (ffi-lib "msvcrt.dll") (_fun _pointer -> _void)) + free)]) + (free p))) ;; Test equality and hashing of c pointers: (let ([seventeen1 (cast 17 _intptr _pointer)]