From: Lars Brinkhoff Date: Sat, 8 Apr 2017 05:07:32 +0000 (+0200) Subject: Fix circular read syntax for records. X-Git-Tag: emacs-26.0.90~521^2~678 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4fbfd7ad53810153371a588a9bd1a69230f60dd5;p=emacs.git Fix circular read syntax for records. * lread.c (substitute_object_recurse): Work with records. * lread-tests.el (lread-record-1): New test. --- diff --git a/src/lread.c b/src/lread.c index 6de9fe6e08e..513f63e4315 100644 --- a/src/lread.c +++ b/src/lread.c @@ -3400,7 +3400,8 @@ substitute_object_recurse (Lisp_Object object, Lisp_Object placeholder, Lisp_Obj if (BOOL_VECTOR_P (subtree)) return subtree; /* No sub-objects anyway. */ else if (CHAR_TABLE_P (subtree) || SUB_CHAR_TABLE_P (subtree) - || COMPILEDP (subtree) || HASH_TABLE_P (subtree)) + || COMPILEDP (subtree) || HASH_TABLE_P (subtree) + || RECORDP (subtree)) length = ASIZE (subtree) & PSEUDOVECTOR_SIZE_MASK; else if (VECTORP (subtree)) length = ASIZE (subtree); diff --git a/test/src/lread-tests.el b/test/src/lread-tests.el index a783afd3128..27f967f045b 100644 --- a/test/src/lread-tests.el +++ b/test/src/lread-tests.el @@ -112,4 +112,8 @@ (should-error (read "#24r") :type 'invalid-read-syntax) (should-error (read "#") :type 'invalid-read-syntax)) +(ert-deftest lread-record-1 () + (should (equal '(#s(foo) #s(foo)) + (read "(#1=#s(foo) #1#)")))) + ;;; lread-tests.el ends here