comparison src/print.c @ 67638:5c55209169fc

2005-12-17 Chong Yidong <cyd@stupidchicken.com> * print.c (print_preprocess): Just signal an error if print_depth is exceeded.
author Chong Yidong <cyd@stupidchicken.com>
date Sat, 17 Dec 2005 15:55:29 +0000
parents eb9d3a206a25
children 5e88f41fd520 14a4eb789b45
comparison
equal deleted inserted replaced
67637:eb9d3a206a25 67638:5c55209169fc
1311 int loop_count = 0; 1311 int loop_count = 0;
1312 Lisp_Object halftail; 1312 Lisp_Object halftail;
1313 1313
1314 /* Give up if we go so deep that print_object will get an error. */ 1314 /* Give up if we go so deep that print_object will get an error. */
1315 /* See similar code in print_object. */ 1315 /* See similar code in print_object. */
1316 /* Because print_preprocess "follows" nested lists in a slightly 1316 if (print_depth >= PRINT_CIRCLE)
1317 different order from print_object, there is a risk of giving up 1317 error ("Apparently circular structure being printed");
1318 too soon. In that case, a deeply nested circular list may cause
1319 print_object to loop. Using 3 * PRINT_CIRCLE should make this
1320 possibility negligible, but at some point someone will have to
1321 sit down and do a more careful analysis. -- cyd */
1322 if (print_depth >= 3 * PRINT_CIRCLE)
1323 return;
1324 1318
1325 /* Avoid infinite recursion for circular nested structure 1319 /* Avoid infinite recursion for circular nested structure
1326 in the case where Vprint_circle is nil. */ 1320 in the case where Vprint_circle is nil. */
1327 if (NILP (Vprint_circle)) 1321 if (NILP (Vprint_circle))
1328 { 1322 {