Index: coops.scm =================================================================== --- coops.scm (revision 26776) +++ coops.scm (working copy) @@ -372,21 +372,23 @@ (lambda (%before-method) (apply %before-method %args)) %applicable-before-methods) - (let ((%res + (call-with-values + (lambda () (apply (let ((m (car %applicable-primary-methods))) (set! %applicable-primary-methods - (cdr %applicable-primary-methods)) + (cdr %applicable-primary-methods)) m) %next-method? %call-next-method - %args))) - (for-each - (lambda (%after-method) - (apply %after-method %args)) - %applicable-after-methods) - %res)))))) + %args)) + (lambda (#!rest %res) + (for-each + (lambda (%after-method) + (apply %after-method %args)) + %applicable-after-methods) + (apply values %res)))))))) (%call-next-method)))))) (cond-expand (no-cache