From b7ab344d5ad902240a1756171ec56a1da0b40bbf Mon Sep 17 00:00:00 2001 From: retropikzel Date: Thu, 28 Aug 2025 09:08:24 +0300 Subject: [PATCH] Gauche fixes --- Makefile | 1 + foreign/c/primitives/chibi/foreign-c.stub | 2 +- foreign/c/primitives/gauche/foreign-c-primitives-gauche.h | 4 +++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index c2c2ea1..29ca33e 100644 --- a/Makefile +++ b/Makefile @@ -210,5 +210,6 @@ clean-all: find . -name "*@gambit*" -delete rm -rf tmp rm -rf foreign/c/primitives/chibi/foreign-c.c + rm -rf foreign/c/lib rm -rf *.tgz rm -rf README.html diff --git a/foreign/c/primitives/chibi/foreign-c.stub b/foreign/c/primitives/chibi/foreign-c.stub index 482daba..0d929f4 100644 --- a/foreign/c/primitives/chibi/foreign-c.stub +++ b/foreign/c/primitives/chibi/foreign-c.stub @@ -117,7 +117,7 @@ (c-declare "void c_bytevector_pointer_set (void* pointer, int offset, void* value) { char* p = (char*)pointer + offset; *(char**)p = value; }") (define-c void (c-bytevector-pointer-set! c_bytevector_pointer_set) ((pointer void*) int (maybe-null pointer void*))) -(c-declare "void* c_bytevector_pointer_ref (void* pointer, int offset) { char* p = (char*)pointer + offset; return *(char**)p; }") +(c-declare "void* c_bytevector_pointer_ref (void* pointer, int offset) { char** p = (char**)pointer + offset; return (void*)*p; }") (define-c (maybe-null pointer void*) (c-bytevector-pointer-ref c_bytevector_pointer_ref) ((maybe-null pointer void*) int)) (c-declare "ffi_cif cif;") diff --git a/foreign/c/primitives/gauche/foreign-c-primitives-gauche.h b/foreign/c/primitives/gauche/foreign-c-primitives-gauche.h index fbbce0d..d68d885 100644 --- a/foreign/c/primitives/gauche/foreign-c-primitives-gauche.h +++ b/foreign/c/primitives/gauche/foreign-c-primitives-gauche.h @@ -44,7 +44,7 @@ extern ScmObj align_of_void(); extern ScmObj shared_object_load(ScmString* path, ScmObj options); //extern ScmObj pointer_null(); -extern ScmObj is_pointer_null(); +extern ScmObj is_pointer_null(ScmObj pointer); //extern ScmObj pointer_allocate(int size); //extern ScmObj pointer_address(ScmObj pointer); extern ScmObj is_pointer(ScmObj pointer); @@ -53,6 +53,7 @@ extern ScmObj is_pointer(ScmObj pointer); //extern ScmObj pointer_set_int8(ScmObj pointer, int offset, int8_t value); extern ScmObj pointer_set_uint8(ScmObj pointer, int offset, uint8_t value); +extern ScmObj pointer_get_uint8(ScmObj pointer, int offset); /* * extern ScmObj pointer_set_int16(ScmObj pointer, int offset, int16_t value); * extern ScmObj pointer_set_uint16(ScmObj pointer, int offset, uint16_t value); @@ -72,6 +73,7 @@ extern ScmObj pointer_set_uint8(ScmObj pointer, int offset, uint8_t value); * extern ScmObj pointer_set_double(ScmObj pointer, int offset, double value); * */ +extern ScmObj pointer_set_pointer(ScmObj pointer, int offset, ScmObj value); extern ScmObj pointer_get_pointer(ScmObj pointer, int offset); //extern ScmObj string_to_pointer(ScmObj string); //extern ScmObj pointer_to_string(ScmObj pointer);