diff options
Diffstat (limited to 'Lisp/internal-utilities.lisp')
-rw-r--r-- | Lisp/internal-utilities.lisp | 12 |
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) |