chiark / gitweb /
src/class-finalize-impl.lisp (clos-tiebreaker): Search from the right end.
The docstring clearly says that we take the candidate whose direct
subclass is rightmost in the SO-FAR list, but the code searches SO-FAR
from the left and takes the first match. As far as I can make out, this
has always been wrong: the earliest version of `merge-lists' builds the
output list in order, and the earliest version of `clos-tiebreaker'
searched from the left anyway.
Just reverse the list before scanning.