Subject: bug#16103: closed (Re: bug#16103: 24.3.50; `read' and circular objects)

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 10 Dec 2013 22:48:02 +0000

Your bug report

#16103: 24.3.50; `read' and circular objects

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
16103: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16103
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#16103: 24.3.50; `read' and circular objects
From: Andreas Schwab <[email-masked]>
To: Drew Adams <[email-masked]>
Cc: [email-masked]
Date: Tue, 10 Dec 2013 23:47:27 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

You didn't set print-circle.

Andreas.

-- 
Andreas Schwab, [email-masked]
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

Subject: 24.3.50; `read' and circular objects
From: Drew Adams <[email-masked]>
To: [email-masked]
Date: Tue, 10 Dec 2013 12:51:16 -0800 (PST)
List-Id: <debbugs-submit.debbugs.gnu.org>

Dunno whether this is a bug.  If it is not, I'd appreciate some help
understanding it.  (elisp) `Circular Objects' does not seem to cover it,
AFAICT.

This Lisp code is in a file:

((last-sort-comparer
  (bmkp-info-cp bmkp-gnus-cp bmkp-url-cp bmkp-local-file-type-cp)
  bmkp-alpha-p)
 (last-reverse-sort-p)
 (last-reverse-multi-sort-p)
 (last-latest-bookmark-alist #1=(#4=#("setq" 0 4
				      (bmkp-full-record #1#))
				    (filename . "~/.emacs")
				    (buffer-name . ".emacs")
				    (front-context-string . "      (append (l")
				    (rear-context-string . "(setq load-path\n")
				    (front-context-region-string)
				    (rear-context-region-string)
				    (visits . 0)
				    (time . #2=(21158 44564 146055 551000))
				    (created . #2#)
				    (position . 17)))
 (last-bmenu-omitted-bookmarks)
 (last-bmenu-marked-bookmarks)
 (last-bmenu-filter-function)
 (last-bmenu-filter-pattern . #3="")
 (last-bmenu-title . #3#)
 (last-bmenu-bookmark . #4#)
 (last-specific-buffer . #3#)
 (last-specific-file . #3#)
 (last-bmenu-toggle-filenames . t)
 (last-bmenu-before-hide-marked-alist)
 (last-bmenu-before-hide-unmarked-alist)
 (last-bookmark-file . "/home/fcihh/.emacs.bmk"))

With point at bob in the file, I do (read (current-buffer)), and this
is the result:

((last-sort-comparer
  (bmkp-info-cp bmkp-gnus-cp bmkp-url-cp bmkp-local-file-type-cp)
  bmkp-alpha-p)
 (last-reverse-sort-p)
 (last-reverse-multi-sort-p)
 (last-latest-bookmark-alist
  (#("setq" 0 4
     (bmkp-full-record #2))
   (filename . "~/.emacs")
   (buffer-name . ".emacs")
   (front-context-string . "      (append (l")
   (rear-context-string . "(setq load-path\n")
   (front-context-region-string)
   (rear-context-region-string)
   (visits . 0)
   (time 21158 44564 146055 551000)
   (created 21158 44564 146055 551000)
   (position . 17)))
 (last-bmenu-omitted-bookmarks)
 (last-bmenu-marked-bookmarks)
 (last-bmenu-filter-function)
 (last-bmenu-filter-pattern . "")
 (last-bmenu-title . "")
 (last-bmenu-bookmark .
                      #("setq" 0 4
                        (bmkp-full-record
                         (#2
                          (filename . "~/.emacs")
                          (buffer-name . ".emacs")
                          (front-context-string . "      (append (l")
                          (rear-context-string . "(setq load-path\n")
                          (front-context-region-string)
                          (rear-context-region-string)
                          (visits . 0)
                          (time 21158 44564 146055 551000)
                          (created 21158 44564 146055 551000)
                          (position . 17)))))
 (last-specific-buffer . "")
 (last-specific-file . "")
 (last-bmenu-toggle-filenames . t)
 (last-bmenu-before-hide-marked-alist)
 (last-bmenu-before-hide-unmarked-alist)
 (last-bookmark-file . "/home/fcihh/.emacs.bmk"))

Notice the remaining #2 occurrences.  I would have expected the above
pp-written sexp to be similar to what was in the file: a representation
of similar circular list structure.

Or if not that, I would at least expect that all #-notation references
to shared structure would be resolved, so that there are no orphaned
references like #2.

I would prefer to have `read' give me the (equivalent/similar) list
structure, with circularities.  But I could probably live with
`read' giving me a tree with copies where there originally was shared
structure (i.e., all # references resolved).

What I'm seeing looks to me like a bug.  Help understanding is
appreciated.  I write out a list structure that has circularities,
and I want to `read' the result to get back a similar structure.  What
should I be doing differently, or what is it that I need to be aware
of, that I'm currently missing?  Thx.

In GNU Emacs 24.3.50.2 (i686-pc-mingw32)
 of 2013-11-28 on LEG570
Bzr revision: 115271 [email-masked]
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --enable-checking 'CFLAGS=-O0 -g3' CPPFLAGS=-DGLYPH_DEBUG=1'