1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 11:50:28 +02:00

Fix `foreign.test' for big endian machines.

* test-suite/tests/foreign.test ("pointer<->bytevector")["pointer from
  bits", "dereference-pointer"]: Fix iteration order for big endian
  machines.
This commit is contained in:
Ludovic Courtès 2011-05-06 17:43:37 +02:00
parent a2a6c0e319
commit 1f78c6691f

View file

@ -124,24 +124,32 @@
(pass-if "pointer from bits" (pass-if "pointer from bits"
(let* ((bytes (iota (sizeof '*))) (let* ((bytes (iota (sizeof '*)))
(bv (u8-list->bytevector bytes))) (bv (u8-list->bytevector bytes))
(fold (case (native-endianness)
((little) fold-right)
((big) fold)
(else (error "unsupported endianness")))))
(= (pointer-address (= (pointer-address
(make-pointer (bytevector-uint-ref bv 0 (native-endianness) (make-pointer (bytevector-uint-ref bv 0 (native-endianness)
(sizeof '*)))) (sizeof '*))))
(fold-right (lambda (byte address) (fold (lambda (byte address)
(+ byte (* 256 address))) (+ byte (* 256 address)))
0 0
bytes)))) bytes))))
(pass-if "dereference-pointer" (pass-if "dereference-pointer"
(let* ((bytes (iota (sizeof '*))) (let* ((bytes (iota (sizeof '*)))
(bv (u8-list->bytevector bytes))) (bv (u8-list->bytevector bytes))
(fold (case (native-endianness)
((little) fold-right)
((big) fold)
(else (error "unsupported endianness")))))
(= (pointer-address (= (pointer-address
(dereference-pointer (bytevector->pointer bv))) (dereference-pointer (bytevector->pointer bv)))
(fold-right (lambda (byte address) (fold (lambda (byte address)
(+ byte (* 256 address))) (+ byte (* 256 address)))
0 0
bytes))))) bytes)))))
(with-test-prefix "pointer<->string" (with-test-prefix "pointer<->string"