~ chicken-core (master) eb14f6dd52ac13ad72999b92ab938155bc0d1131


commit eb14f6dd52ac13ad72999b92ab938155bc0d1131
Author:     Felix Winkelmann <felix.winkelmann@bevuta.com>
AuthorDate: Sun Sep 13 22:15:21 2026 +0200
Commit:     Felix Winkelmann <felix.winkelmann@bevuta.com>
CommitDate: Sun Sep 13 22:15:40 2026 +0200

    Use safe bytevector predicate

diff --git a/library.scm b/library.scm
index f79eb0b6..16ef6b7c 100644
--- a/library.scm
+++ b/library.scm
@@ -6852,7 +6852,7 @@ EOF
 (define ##sys#make-tagged-pointer (##core#primitive "C_make_tagged_pointer"))
 (define (##sys#pointer? x) (##core#inline "C_anypointerp" x))
 (define (##sys#set-pointer-address! ptr addr) (##core#inline "C_update_pointer" addr ptr))
-(define (##sys#bytevector? x) (##core#inline "C_bytevectorp" x))
+(define (##sys#bytevector? x) (##core#inline "C_i_bytevectorp" x))
 (define (##sys#string->pbytevector s) (##core#inline "C_string_to_pbytevector" s))
 (define (##sys#permanent? x) (##core#inline "C_permanentp" x))
 (define (##sys#block-address x) (##core#inline_allocate ("C_block_address" 6) x))
diff --git a/runtime.c b/runtime.c
index 5e219273..74f6b9cd 100644
--- a/runtime.c
+++ b/runtime.c
@@ -5634,7 +5634,7 @@ C_regparm C_word C_i_bytevector_ref(C_word v, C_word i)
 {
   int j;
 
-  if(!C_truep(C_bytevectorp(v)))
+  if(!C_truep(C_i_bytevectorp(v)))
     barf(C_BAD_ARGUMENT_TYPE_ERROR, "bytevector-u8-ref", v);
 
   if(i & C_FIXNUM_BIT) {
@@ -5910,7 +5910,7 @@ C_regparm C_word C_i_vector_length(C_word v)
 
 C_regparm C_word C_i_bytevector_length(C_word v)
 {
-  if(C_immediatep(v) || !C_truep(C_bytevectorp(v)))
+  if(!C_truep(C_i_bytevectorp(v)))
     barf(C_BAD_ARGUMENT_TYPE_ERROR, "bytevector-length", v);
 
   return C_fix(C_header_size(v));
@@ -6089,7 +6089,7 @@ C_regparm C_word C_i_bytevector_set(C_word v, C_word i, C_word x)
   int j;
   C_word n;
 
-  if(!C_truep(C_bytevectorp(v)))
+  if(!C_truep(C_i_bytevectorp(v)))
     barf(C_BAD_ARGUMENT_TYPE_ERROR, "bytevector-set!", v);
 
   if(i & C_FIXNUM_BIT) {
Trap