-(defmacro with-c-strvec ((var str-list) &body body)
- (with-unique-names (sap size)
- `(multiple-value-bind (,sap ,var ,size)
- (string-list-to-c-strvec ,str-list)
- (unwind-protect
- (progn
- ,@body)
- (sb-sys:deallocate-system-memory ,sap ,size)))))
+(defmacro with-c-strvec ((var str-list &key null) &body body)
+ (once-only ((null null))
+ (with-unique-names (sap size)
+ `(multiple-value-bind (,sap ,var ,size)
+ (if ,null
+ (values nil (sb-sys:int-sap 0))
+ (string-list-to-c-strvec ,str-list))
+ (unwind-protect
+ (progn
+ ,@body)
+ (unless ,null
+ (sb-sys:deallocate-system-memory ,sap ,size)))))))