Skip to content
Snippets Groups Projects
Forked from cmucl / cmucl
Source project has a limited visibility.
user avatar
rtoy authored
the following enters an infinite recursion if it gets compiled two
times:

(def-alien-type nil (struct foo
			    (f (* (function (values) (* (struct foo)))))))

During the second compile, the existing type is compared with the to
be defined type.  This enters a recursion because (struct foo) is
recursive and the comparison is done again.  The current code has a
"depth" counter and simply returns true if it exceeds 10.  But it only
works for pointers to records and loops forever for function pointers.

The patch below should fix this.  It keeps a hashtable of the already
compared types and returns true if a pair is already in the hashtable.
c5c28c25
History
Name Last commit Last update
..