[PATCH] circularity detection broken in 1.123
Richard M Kreuter <[email protected]> Mon, 21 Jul 2008 09:44:32 -0400
| Newsgroups | gmane.lisp.cclan.general |
|---|---|
| Message-ID | <[email protected]> |
Hi,
It seems that circularity detection is broken in asdf 1.123 and
therabouts. Patch attached.
Demonstration:
* (require "ASDF")
("ASDF")
* (progn
(with-open-file (f "0.lisp" :direction :output :if-exists :supersede)
(print 'foo f))
(with-open-file (f "1.lisp" :direction :output :if-exists :supersede)
(print 'bar f))
nil)
NIL
* (asdf:defsystem circ
:pathname *default-pathname-defaults*
:components ((:file "0" :depends-on ("1"))
(:file "1" :depends-on ("0"))))
#<ASDF:SYSTEM "circ" {10025620C1}>
* (asdf:oos 'asdf:compile-op "circ")
Control stack guard page temporarily disabled: proceed with caution
debugger invoked on a SB-KERNEL::CONTROL-STACK-EXHAUSTED in thread #<THREAD "initial thread" {1002450D61}>:
Control stack exhausted (no more space for function call frames). This is probably due to heavily nested or infinitely recursive function calls, or a tail call that SBCL cannot or has not optimized away.
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.
(SB-KERNEL::CONTROL-STACK-EXHAUSTED-ERROR)
0] :a
--
RmK
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
cclan-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cclan-list
asdf.diff
(text/x-diff, 388 B)
--- asdf.lisp 5 Jul 2008 02:57:20 -0000 1.123
+++ asdf.lisp 21 Jul 2008 13:44:41 -0000
@@ -588,7 +588,7 @@
(defgeneric component-visiting-p (operation component))
(defmethod component-visiting-p ((o operation) (c component))
- (let ((node (cons o c)))
+ (let ((node (node-for o c)))
(member node (operation-visiting-nodes (operation-ancestor o))
:test 'equal)))