]> git.eshelyaron.com Git - emacs.git/commitdiff
Revert last change.
authorChong Yidong <cyd@stupidchicken.com>
Sat, 17 Dec 2005 15:51:00 +0000 (15:51 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Sat, 17 Dec 2005 15:51:00 +0000 (15:51 +0000)
src/ChangeLog
src/print.c

index 97c51956cf7528f4001cef75bef60a0fd1db71e1..d3fb40197b330c8209143896f0bf890f679b22c5 100644 (file)
@@ -1,8 +1,3 @@
-2005-12-17  Chong Yidong  <cyd@stupidchicken.com>
-
-       * print.c (print_preprocess): Just signal an error if print_depth
-       is exceeded.
-
 2005-12-17  Eli Zaretskii  <eliz@gnu.org>
 
        * .gdbinit: Set a breakpoint on w32_abort.
index 20c359f9b69cb17a2b2fb9319c178f10642d897e..ed6b402763afae9857a62ec3bc27071dba3f7d32 100644 (file)
@@ -1313,8 +1313,14 @@ print_preprocess (obj)
 
   /* Give up if we go so deep that print_object will get an error.  */
   /* See similar code in print_object.  */
-  if (print_depth >= PRINT_CIRCLE)
-    error ("Apparently circular structure being printed");
+  /* Because print_preprocess "follows" nested lists in a slightly
+     different order from print_object, there is a risk of giving up
+     too soon.  In that case, a deeply nested circular list may cause
+     print_object to loop.  Using 3 * PRINT_CIRCLE should make this
+     possibility negligible, but at some point someone will have to
+     sit down and do a more careful analysis. -- cyd */
+  if (print_depth >= 3 * PRINT_CIRCLE)
+    return;
 
   /* Avoid infinite recursion for circular nested structure
      in the case where Vprint_circle is nil.  */