- (if (ccl:mactype-p type)
- (push (list (first spec) (foreign-object-size type)) simple)
- (push spec recs)))
- (cond ((and simple recs)
- `(ccl:%stack-block ,simple
- (ccl:rlet ,recs
- ,@body)))
- (simple `(ccl:%stack-block ,simple ,@body))
- (recs `(ccl:rlet ,recs ,@body)))))
+ (setf count 1)
+ (when (and (listp type) (eq (first type) :array))
+ (setf count (nth 2 type))
+ (unless (integerp count) (error "Invalid size for array: ~a" type))
+ (setf type (nth 1 type)))
+ (push (list (first spec) (* count (size-of-foreign-type type))) params))
+ `(ccl:%stack-block ,params ,@body)))