--- /Users/rpg/lisp/iterate/iterate.lisp 2012-01-05 13:38:20.000000000 -0600 +++ /Users/rpg/lisp/vendor/iterate/iterate.lisp 2012-01-04 19:34:52.000000000 -0600 @@ -2078,8 +2078,6 @@ (defun free-vars (form bound-vars) nil) ((symbolp (car form)) (cond - ((macro-function (car form) *env*) - (free-vars (macroexpand-1 form *env*) bound-vars)) ((or (special-operator-p (car form)) ;; Lucid doesn't think that these are special forms ;; and we need to handle declarations: @@ -2121,6 +2119,8 @@ (defun free-vars (form bound-vars) (nconc free-vars (free-vars-list body bound-vars)))) (otherwise nil))) + ((macro-function (car form) *env*) + (free-vars (macroexpand-1 form *env*) bound-vars)) (t ; function call (free-vars-list (cdr form) bound-vars)))) ((and (consp (car form)) (eq (caar form) 'lambda))