summaryrefslogtreecommitdiff
path: root/Lisp/internal-utilities.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'Lisp/internal-utilities.lisp')
-rw-r--r--Lisp/internal-utilities.lisp12
1 files changed, 8 insertions, 4 deletions
diff --git a/Lisp/internal-utilities.lisp b/Lisp/internal-utilities.lisp
index 92b003b..b23905f 100644
--- a/Lisp/internal-utilities.lisp
+++ b/Lisp/internal-utilities.lisp
@@ -50,12 +50,16 @@
(member symbol *features*))
-(defmacro with-foreign-string-pool ((register-fn-name) &body body)
+(defmacro with-foreign-string-pool ((register-fn-name
+ allocate-fn-name) &body body)
(let ((pool-var (gensym)))
`(let ((,pool-var (list)))
- (flet ((,register-fn-name (x)
- (push x ,pool-var)
- x))
+ (labels ((,register-fn-name (x)
+ (push x ,pool-var)
+ x)
+ (,allocate-fn-name (string)
+ (,register-fn-name
+ (cffi:foreign-string-alloc string))))
(unwind-protect
(progn ,@body)
(dolist (x ,pool-var)