This commit fixes a number of test cases related to circularity detection. Some of these cases showed loss of data. Even in the remaining failures, there's no longer any loss of data. The cases that still fail do however show loss of structure. That's on my list to be fixed. As it stands, I'm very happy to finally be fixing this long standing issue in our pretty printer.<div>
<br></div><div><br></div><div>Bye,</div><div><br></div><div>Erik.<br><br><div class="gmail_quote">On Fri, Jul 15, 2011 at 11:18 PM,  <span dir="ltr"><<a href="mailto:ehuelsmann@common-lisp.net">ehuelsmann@common-lisp.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Author: ehuelsmann<br>
Date: Fri Jul 15 14:18:28 2011<br>
New Revision: 13407<br>
<br>
Log:<br>
Eliminate a series of PPRINT.* ansi test suite failures<br>
(dropping my test failure count from 27 to 20!).<br>
<br>
Modified:<br>
   trunk/abcl/src/org/armedbear/lisp/pprint.lisp<br>
<br>
Modified: trunk/abcl/src/org/armedbear/lisp/pprint.lisp<br>
==============================================================================<br>
--- trunk/abcl/src/org/armedbear/lisp/pprint.lisp       Fri Jul 15 09:34:23 2011        (r13406)<br>
+++ trunk/abcl/src/org/armedbear/lisp/pprint.lisp       Fri Jul 15 14:18:28 2011        (r13407)<br>
@@ -611,12 +611,14 @@<br>
   (if (xp-structure-p stream)<br>
       (apply fn stream args)<br>
       (let ((*abbreviation-happened* nil)<br>
-           (sys::*circularity-hash-table*<br>
-             (if (and *print-circle* (null sys::*circularity-hash-table*))<br>
-                 (make-hash-table :test 'eq)<br>
-                 sys::*circularity-hash-table*))<br>
            (*result* nil))<br>
-       (xp-print fn (sys:out-synonym-of stream) args)<br>
+        (if (and *print-circle* (null sys::*circularity-hash-table*))<br>
+            (let ((sys::*circularity-hash-table* (make-hash-table :test 'eq)))<br>
+              (xp-print fn (make-broadcast-stream) args)<br>
+              (let ((sys::*circularity-counter* 0))<br>
+                (xp-print fn (sys:out-synonym-of stream) args)<br>
+                ))<br>
+            (xp-print fn (sys:out-synonym-of stream) args))<br>
        *result*)))<br>
<br>
 (defun xp-print (fn stream args)<br>
<br>
_______________________________________________<br>
armedbear-cvs mailing list<br>
<a href="mailto:armedbear-cvs@common-lisp.net">armedbear-cvs@common-lisp.net</a><br>
<a href="http://lists.common-lisp.net/cgi-bin/mailman/listinfo/armedbear-cvs" target="_blank">http://lists.common-lisp.net/cgi-bin/mailman/listinfo/armedbear-cvs</a><br>
</blockquote></div><br></div>