From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Noam Postavsky Newsgroups: gmane.emacs.bugs Subject: bug#31146: 27.0.50; ielm via cl-prin1 infloops when printing circular object Date: Sat, 14 Apr 2018 01:16:00 -0400 Message-ID: <87sh7yjrlb.fsf@gmail.com> References: <87in8v435z.fsf@tcd.ie> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1523682916 25988 195.159.176.226 (14 Apr 2018 05:15:16 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 14 Apr 2018 05:15:16 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.90 (gnu/linux) Cc: 31146@debbugs.gnu.org To: "Basil L. Contovounesios" Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Apr 14 07:15:12 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f7DWp-0006eW-O1 for geb-bug-gnu-emacs@m.gmane.org; Sat, 14 Apr 2018 07:15:11 +0200 Original-Received: from localhost ([::1]:59566 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f7DYw-0001rQ-88 for geb-bug-gnu-emacs@m.gmane.org; Sat, 14 Apr 2018 01:17:22 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:55391) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f7DYh-0001oj-An for bug-gnu-emacs@gnu.org; Sat, 14 Apr 2018 01:17:10 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f7DYc-0007Vq-CE for bug-gnu-emacs@gnu.org; Sat, 14 Apr 2018 01:17:07 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:43345) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f7DYc-0007Vh-5P for bug-gnu-emacs@gnu.org; Sat, 14 Apr 2018 01:17:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1f7DYb-0006ja-T2 for bug-gnu-emacs@gnu.org; Sat, 14 Apr 2018 01:17:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 14 Apr 2018 05:17:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31146 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 31146-submit@debbugs.gnu.org id=B31146.152368297025806 (code B ref 31146); Sat, 14 Apr 2018 05:17:01 +0000 Original-Received: (at 31146) by debbugs.gnu.org; 14 Apr 2018 05:16:10 +0000 Original-Received: from localhost ([127.0.0.1]:51242 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f7DXl-0006i5-Tm for submit@debbugs.gnu.org; Sat, 14 Apr 2018 01:16:10 -0400 Original-Received: from mail-it0-f49.google.com ([209.85.214.49]:32879) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f7DXj-0006hn-T5; Sat, 14 Apr 2018 01:16:08 -0400 Original-Received: by mail-it0-f49.google.com with SMTP id x144-v6so6989036itc.0; Fri, 13 Apr 2018 22:16:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=pcT4y+5D9+VD7VaOKtlPKAhFjqtOLmCjU0BCQmLYdHM=; b=JPWj9p1co2hp++J6C/PbTf8CEeyvTSywl8M1WlKuJ7D/rKN1Qq4KneKvLKPnrgbfg4 cyLsl6IhlF3+Wh3zGAf9BLMQ/aEFENDZk2iaBbu//wNnHGp7VJL8dINTv5nQ2vxR8YrR apd9Uw1YQmJup7Ury629gCKHqMxyDVUS4fu+mYttzkXQBPT9kR5mDfTzx8i7xTX/FA4t x8SU57YTsvS+VJRU2vlxMur99cY1Er+3uK0Wv8UAbvrZ+Vhx4e72ARvXsEh3x2k+LU8v Dei5bZ7cpAqC4uw0XrM71EqJej8u+QY6KAUDMEHaZxegGRMfDrqa7iTknFHzbS/vgvw7 WeYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=pcT4y+5D9+VD7VaOKtlPKAhFjqtOLmCjU0BCQmLYdHM=; b=IHhP/sPnpza4l//301AmZ7ykGLwXkM509GOO/ZiF16+AFDB2KVEAkjxr6/xmb0BJcg f8C4sqRq4KU8cEz6/AtdOd5zgmc9ui1WRgPeocqCilYZJYZ4yHpUxcUO73nCZG5xX6ia iLbHOad83F9u4EIIJiW0xMTnQLx+00LaldwYppbOKEi9UWtgKNSeL4pMoMlW9AcwugeI MffKbkobZB63TFHLv83ETb4CVZF3xhFioYSs31EKV81yKsH+uHzUnGJexo7Q6CeLDVEd LQd+tVc8viKomA46ftCmxJQbFCKEfNIGaeQdEOmLERVkHCp75OhXRdRFupCrieAVtV7e HuuA== X-Gm-Message-State: ALQs6tAybBbsXknHmssmIe1/JQPsY7f6QP33RXPNb7XLSl7ru4CG15YP izuBILDfe8ZdcFh4m6LOtFl/xQ== X-Google-Smtp-Source: AIpwx49WYR6VdBvDdawQMkWwMqITj3Xmk7vqvz6Y1xvD2oKk5vpT4LfgCnMM3XTtjOuQY8Iun1/F+A== X-Received: by 2002:a24:7343:: with SMTP id y64-v6mr8477321itb.6.1523682962331; Fri, 13 Apr 2018 22:16:02 -0700 (PDT) Original-Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id o132sm3514832iod.21.2018.04.13.22.16.00 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 13 Apr 2018 22:16:01 -0700 (PDT) In-Reply-To: <87in8v435z.fsf@tcd.ie> (Basil L. Contovounesios's message of "Fri, 13 Apr 2018 15:00:24 +0100") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:145321 Archived-At: --=-=-= Content-Type: text/plain retitle 31146 cl-prin1 infloops when printing list with circularity in the tail tags 31146 + patch quit "Basil L. Contovounesios" writes: > 1. emacs -Q > 2. M-x ielm RET > 3. (let ((l (make-list 2 0))) > (nconc l (cdr l))) > 4. C-m > => infloop Right, though the bug is really about cl-prin1, ielm is just incidental. Here's a patch. Hmm, how should cl-defmethod changes be specified in the ChangeLog? I just put (cl-print-object), but is there some notation to indicate it's this particular defmethod? (cl-defmethod cl-print-object ((object cons) stream) --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=v1-0001-Fix-cl-print-for-circular-sublists-Bug-31146.patch Content-Description: patch >From 57d1b421826b0b605abf2e9023e1a4f004b3502e Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sat, 14 Apr 2018 01:02:25 -0400 Subject: [PATCH v1] Fix cl-print for circular sublists (Bug#31146) * lisp/emacs-lisp/cl-print.el (cl-print-object): 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. --- lisp/emacs-lisp/cl-print.el | 9 ++++++--- test/lisp/emacs-lisp/cl-print-tests.el | 10 ++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lisp/emacs-lisp/cl-print.el b/lisp/emacs-lisp/cl-print.el index 78cd6f9d9e..ada5923515 100644 --- a/lisp/emacs-lisp/cl-print.el +++ b/lisp/emacs-lisp/cl-print.el @@ -62,9 +62,12 @@ cl-print--currently-printing (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 diff --git a/test/lisp/emacs-lisp/cl-print-tests.el b/test/lisp/emacs-lisp/cl-print-tests.el index 660d5c8069..d986c4015d 100644 --- a/test/lisp/emacs-lisp/cl-print-tests.el +++ b/test/lisp/emacs-lisp/cl-print-tests.el @@ -55,4 +55,14 @@ (let ((print-circle t)) (should (equal "(#1=(a . #1#) #1#)" (cl-prin1-to-string x)))))) +(ert-deftest cl-print-circle-2 () + ;; Bug#31146. + (let ((x '(0 . #1=(0 . #1#)))) + (let ((print-circle nil)) + (should (string-match "\\`(0 0 . #[0-9])\\'" + (cl-prin1-to-string x)))) + (let ((print-circle t)) + (should (equal "(0 . #1=(0 . #1#))" (cl-prin1-to-string x)))))) + + ;;; cl-print-tests.el ends here. -- 2.11.0 --=-=-=--