anchor.diff:                    (setf (cepl.context::%cepl-context-current-draw-buffers-len ,ctx)
                           ,len)
                     (values))))
  -           (gen-draw-buffer-call-from-array-form (ctx form)
  +           (gen-draw-buffer-call-from-array-form (ctx form body)
                (alexandria:with-gensyms (l-arr l-arr-len ptr)
                  `(let* ((,l-arr ,form)
                          (,l-arr-len (array-total-size ,l-arr)))
  
positive.code:                           ,ptr)
                      (setf (cepl.context::%cepl-context-current-draw-buffers-len ,ctx)
                            ,l-arr-len)
                      (%gl:draw-buffers ,l-arr-len ,ptr)))))
             (%write-draw-buffer-pattern-call (ctx fbo body)
               "This plays with the dispatch call from compose-pipelines
                The idea is that the dispatch func can preallocate one array
  
negative.code:                         :do (throw-missing-col-attrs
                               ,l-arr current-fbo arrs fp))))))
             (release-unwind-protect
                 (let* ((,l-arr-len (array-total-size ,l-arr)))
                   (declare (type (simple-array gl-enum-value (*)) ,l-arr)
                            #+sbcl(sb-ext:muffle-conditions
                                   sb-ext:compiler-note))
                   (cffi:with-pointer-to-vector-data (,ptr ,l-arr)
                     (setf current-draw-buffers-ptr ,ptr)
                     (setf current-draw-buffers-len ,l-arr-len)
                     (%gl:draw-buffers ,l-arr-len ,ptr)
                     ,@body))
               (%gl:draw-buffers ,old-draw-buffer-len ,old-draw-buffer-ptr)
               (setf current-draw-buffers-ptr ,old-draw-buffer-ptr)
               (setf current-draw-buffers-len ,old-draw-buffer-len)))))))
  