summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/cl-print.el
diff options
context:
space:
mode:
authorNoam Postavsky <npostavs@gmail.com>2018-04-14 01:02:25 -0400
committerNoam Postavsky <npostavs@gmail.com>2018-04-26 07:37:48 -0400
commitb8aa7ecf54c9b164a59f1b0e9f9fe90531dadd20 (patch)
treee1e627b8472a68eb859b578306490f2dc95b34bd /lisp/emacs-lisp/cl-print.el
parenta92e7b4ef6915e079a97e4e33e45b11508170cb1 (diff)
downloademacs-b8aa7ecf54c9b164a59f1b0e9f9fe90531dadd20.tar.gz
emacs-b8aa7ecf54c9b164a59f1b0e9f9fe90531dadd20.tar.bz2
emacs-b8aa7ecf54c9b164a59f1b0e9f9fe90531dadd20.zip
Fix cl-print for circular sublists (Bug#31146)
* lisp/emacs-lisp/cl-print.el (cl-print-object) <cons>: Push each element of list being printed onto cl-print--currently-printing. * test/lisp/emacs-lisp/cl-print-tests.el (cl-print-circle-2): New test.
Diffstat (limited to 'lisp/emacs-lisp/cl-print.el')
-rw-r--r--lisp/emacs-lisp/cl-print.el9
1 files changed, 6 insertions, 3 deletions
diff --git a/lisp/emacs-lisp/cl-print.el b/lisp/emacs-lisp/cl-print.el
index 78cd6f9d9e5..ada59235153 100644
--- a/lisp/emacs-lisp/cl-print.el
+++ b/lisp/emacs-lisp/cl-print.el
@@ -62,9 +62,12 @@ call other entry points instead, such as `cl-prin1'."
(princ "(" stream)
(cl-print-object car stream)
(while (and (consp object)
- (not (if cl-print--number-table
- (numberp (gethash object cl-print--number-table))
- (memq object cl-print--currently-printing))))
+ (not (cond
+ (cl-print--number-table
+ (numberp (gethash object cl-print--number-table)))
+ ((memq object cl-print--currently-printing))
+ (t (push object cl-print--currently-printing)
+ nil))))
(princ " " stream)
(cl-print-object (pop object) stream))
(when object