- `(let ((,gvalue ,(cond
- ((and type value-p) `(gvalue-new ,type ,value))
- (type `(gvalue-new ,type))
- (`(gvalue-new)))))
- (unwind-protect
- (progn
- ,@body
- ,(unless value-p `(gvalue-get ,gvalue)))
- (gvalue-free ,gvalue))))
+ `(with-memory (,gvalue +gvalue-size+)
+ ,(cond
+ ((and type value-p) `(gvalue-init ,gvalue ,type ,value))
+ (type `(gvalue-init ,gvalue ,type)))
+ ,@body
+ ,(unless value-p `(gvalue-take ,gvalue))))