From 34a6543e489e52da530c9fc81c0b4e7efb32cd21 Mon Sep 17 00:00:00 2001 From: retropikzel Date: Fri, 31 Jul 2026 06:39:49 +0300 Subject: [PATCH] srfi-170: Memory handling improvements --- srfi/170.scm | 21 +++++++++++++-------- srfi/170/VERSION | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/srfi/170.scm b/srfi/170.scm index a1c559e..63b3ae0 100644 --- a/srfi/170.scm +++ b/srfi/170.scm @@ -151,10 +151,14 @@ (follow? file-info:follow?)) (define (file-info-directory? file-info) - (let ((handle (c-open (string->c-bytevector - (file-info:fname/port file-info)) 2))) - (cond ((> handle 0) (c-close handle) #f) - (else #t)))) + (let* ((file-info:fname/port* + (string->c-bytevector (file-info:fname/port file-info))) + (handle (c-open file-info:fname/port 2)) + (result + (cond ((> handle 0) (c-close handle) #f) + (else #t)))) + (c-bytevector-free file-info:fname/port*) + result)) (define-c-struct-type stat-struct `((st_dev int) @@ -252,8 +256,10 @@ (c-bytevector-free error-pointer))) (define (create-hard-link old-fname new-fname) - (c-link (string->c-bytevector old-fname) - (string->c-bytevector new-fname))) + (let ((old-fname* (string->c-bytevector old-fname)) + (new-fname* (string->c-bytevector new-fname))) + (c-link old-fname* new-fname*) + (c-bytevector-free old-fname* new-fname*))) (define (create-symlink old-fname new-fname) (c-slink (string->c-bytevector old-fname) @@ -531,8 +537,7 @@ (append result (list (c-bytevector-ref groups-pointer 'int - (* (c-type-size 'int) count) - )))))) + (* (c-type-size 'int) count))))))) (define (user-supplementary-gids) (let* ((group-count (c-getgroups 0 (c-bytevector-null))) diff --git a/srfi/170/VERSION b/srfi/170/VERSION index 0c62199..7179039 100644 --- a/srfi/170/VERSION +++ b/srfi/170/VERSION @@ -1 +1 @@ -0.2.1 +0.2.3