- (let ((result (gensym)))
- `(let* ((,var (allocate-foreign-object ,type ,@etc))
- (,result (progn ,@body)))
- (free-foreign-object ,var)
- ,result)))
+ `(let ((,var (allocate-foreign-object ,type ,@etc)))
+ (unwind-protect
+ (progn ,@body)
+ (free-foreign-object ,var))))
+