From 5d710ffeab05eb3e2a3b58068466da8b850e3e20 Mon Sep 17 00:00:00 2001 From: retropikzel Date: Wed, 27 Aug 2025 20:30:26 +0300 Subject: [PATCH] Sagittarius fixes --- foreign/c.sld | 2 +- foreign/c/pointer.scm | 2 -- foreign/c/primitives/mosh.scm | 8 ++++++-- foreign/c/primitives/stklos.scm | 9 ++++++++- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/foreign/c.sld b/foreign/c.sld index 67ecbbb..fd42815 100644 --- a/foreign/c.sld +++ b/foreign/c.sld @@ -120,7 +120,7 @@ (scheme file) (scheme inexact) (scheme process-context) - (except (sagittarius ffi) c-free c-malloc) + (except (sagittarius ffi) c-free c-malloc define-c-struct) (sagittarius))) #;(skint (import (scheme base) diff --git a/foreign/c/pointer.scm b/foreign/c/pointer.scm index 0010450..355db80 100644 --- a/foreign/c/pointer.scm +++ b/foreign/c/pointer.scm @@ -76,8 +76,6 @@ (define c-utf8->string (lambda (c-bytevector) - (display c-bytevector) - (newline) (when (c-null? c-bytevector) (error "Can not turn null pointer into string" c-bytevector)) (let ((size (c-strlen c-bytevector))) diff --git a/foreign/c/primitives/mosh.scm b/foreign/c/primitives/mosh.scm index 2370768..b34099c 100644 --- a/foreign/c/primitives/mosh.scm +++ b/foreign/c/primitives/mosh.scm @@ -58,8 +58,12 @@ (define c-bytevector-u8-set! pointer-set-c-uint8!) (define c-bytevector-u8-ref pointer-ref-c-uint8) -(define c-bytevector-pointer-set! pointer-set-c-pointer!) -(define c-bytevector-pointer-ref pointer-ref-c-pointer) +(define c-bytevector-pointer-set! + (lambda (pointer offset value) + (pointer-set-c-pointer! pointer offset value))) +(define c-bytevector-pointer-ref + (lambda (pointer offset) + (pointer-ref-c-pointer pointer offset))) (define type->native-type (lambda (type) diff --git a/foreign/c/primitives/stklos.scm b/foreign/c/primitives/stklos.scm index 3a6f12a..f6eebd1 100644 --- a/foreign/c/primitives/stklos.scm +++ b/foreign/c/primitives/stklos.scm @@ -110,6 +110,13 @@ (lambda (pointer offset value) (cpointer-set-abs! pointer :pointer value offset))) -(define c-bytevector-pointer-ref +#;(define c-bytevector-pointer-ref (lambda (pointer offset) (cpointer-ref-abs pointer :pointer offset))) + +(define c-bytevector-pointer-ref + (lambda (c-bytevector k) + (address->c-bytevector (c-bytevector-uint-ref c-bytevector + 0 + (native-endianness) + (c-type-size 'pointer)))))