summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorNoam Postavsky <npostavs@gmail.com>2018-04-14 01:02:25 -0400
committerNoam Postavsky <npostavs@gmail.com>2018-06-03 12:48:13 -0400
commit9552485c4d471a02cd3973d4458d8513a81f9c85 (patch)
treef90b987879836292f5624921a22a994a88b849fd /lisp/emacs-lisp
parent4c6cdf6fc9ce8a3309948228995b0ea88704c274 (diff)
downloademacs-9552485c4d471a02cd3973d4458d8513a81f9c85.tar.gz
emacs-9552485c4d471a02cd3973d4458d8513a81f9c85.tar.bz2
emacs-9552485c4d471a02cd3973d4458d8513a81f9c85.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. (cherry picked from commit b8aa7ecf54c9b164a59f1b0e9f9fe90531dadd20)
Diffstat (limited to 'lisp/emacs-lisp')
-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 de41d826713..7c0e81c9349 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