syscalls: C struct writer correctly handles pointer fields.

* guix/build/syscalls.scm (write-type): Add case for '*.
This commit is contained in:
Ludovic Courtès 2016-11-16 23:12:14 +01:00
parent d87c201f96
commit f43714e620
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 4 additions and 1 deletions

View File

@ -202,7 +202,7 @@ result is the alignment of the \"most strictly aligned component\"."
types ...))))
(define-syntax write-type
(syntax-rules (~ array)
(syntax-rules (~ array *)
((_ bv offset (type ~ order) value)
(bytevector-uint-set! bv offset value
(endianness order) (sizeof* type)))
@ -215,6 +215,9 @@ result is the alignment of the \"most strictly aligned component\"."
((head . tail)
(write-type bv o type head)
(loop (+ 1 i) tail (+ o (sizeof* type))))))))
((_ bv offset '* value)
(bytevector-uint-set! bv offset (pointer-address value)
(native-endianness) (sizeof* '*)))
((_ bv offset type value)
(bytevector-uint-set! bv offset value
(native-endianness) (sizeof* type)))))