2010/12/7 Zach Beane <xach@xach.com>
I just updated to the latest SBCL from CVS and got a build failure on


For those who want to use the current SBCL with CLX anyway, there is a simple workaround for the problem: in file clx/requests.lisp find a function named SERVE-EVENT and remove the dynamic extent declaration for 'args' argument:

(defun send-event (window event-key event-mask &rest args
           &key propagate-p display &allow-other-keys)
  ;; Additional arguments depend on event-key, and are as specified further below
  ;; with declare-event, except that both resource-ids and resource objects are
  ;; accepted in the event components.  The display argument is only required if the
  ;; window is :pointer-window or :input-focus.
  (declare (type (or window (member :pointer-window :input-focus)) window)
       (type event-key event-key)
       (type (or null event-mask) event-mask)
       (type generalized-boolean propagate-p)
       (type (or null display) display)
       #-sbcl ;the "fix"
       (dynamic-extent args))
  (unless event-mask (setq event-mask 0))

With this modification, CLX compiles fine in SBCL CLHS says that imlementations are free to ignore dynamic-extent completely, so this workaround is not likely to break something in CLX. So, unitl the real fix on SBCL side is available, we may use the tweaked version of SERVE-EVENT.