pattern.scm (pattern->format): Properly free returned pointer.

master
nixo 2021-01-18 12:15:38 +01:00
parent a37ce1347a
commit a36c7edf13
2 changed files with 10 additions and 7 deletions

View File

@ -99,6 +99,8 @@ RETURN-TYPE and accept arguments of ARG-TYPES."
(define-foreign fontconfig-pattern-get
int "FcPatternGet" `(* * ,int *))
(define-foreign libc-free void "free" '(*))
;;;
;;; Object Set
;;;

View File

@ -119,13 +119,14 @@
;; https://www.freedesktop.org/software/fontconfig/fontconfig-devel/fcpatternformat.html
(define* (pattern->format pattern #:optional (format "%{=fclist}"))
(let ((ptr (ffi:fontconfig-pattern-format
(unwrap-pattern pattern) (string->pointer format))))
(if (null-pointer? ptr)
(error "pattern->format" "invalid format")
(pointer->string ptr))
;; FIXME: How to FREE ptr!
))
(let* ((ptr (ffi:fontconfig-pattern-format
(unwrap-pattern pattern) (string->pointer format)))
(formatted
(if (null-pointer? ptr)
(error "pattern->format" "invalid format")
(pointer->string ptr))))
(ffi:libc-free ptr)
formatted))
(define %fc-types
'(fc-unknown ; -1