From 4fbfd7ad53810153371a588a9bd1a69230f60dd5 Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Sat, 8 Apr 2017 07:07:32 +0200 Subject: [PATCH] Fix circular read syntax for records. * lread.c (substitute_object_recurse): Work with records. * lread-tests.el (lread-record-1): New test. --- src/lread.c | 3 ++- test/src/lread-tests.el | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) 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 -- 2.39.2