Commit 581ebd0d authored by Jan Moringen's avatar Jan Moringen
Browse files

Don't infinite-loop on ill-formed DEFSYSTEM :perform option

Before this commit, ill-formed DEFSYSTEM options of the form

  :perform ((op ...)) instead of :perform (op ...)

caused %DEFINE-COMPONENT-INLINE-METHODS to infinite-loop.
parent adcaad53
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -187,8 +187,11 @@ Please only define ~S and secondary systems with a name starting with ~S (e.g. ~
           :for name = (and (keywordp key) (find key +asdf-methods+ :test 'string=))
           :when name :do
           (destructuring-bind (op &rest body) value
             (when (or (not (symbolp op))
                       (not (find-if #'consp body))) ; must contain non-empty lambda list
               (sysdef-error "Ill-formed inline method: ~S" value))
             (loop :for arg = (pop body)
                   :while (atom arg)
                   :while (atom arg) ; guaranteed to terminate due to (find-if #'consp ...)
                   :collect arg :into qualifiers
                   :finally
                      (destructuring-bind (o c) arg