emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-26 f4ea746: cl-make-random-state was not copying its


From: Paul Eggert
Subject: [Emacs-diffs] emacs-26 f4ea746: cl-make-random-state was not copying its arg
Date: Wed, 19 Dec 2018 16:42:53 -0500 (EST)

branch: emacs-26
commit f4ea7464516b22409f429e98595b97cbf8220f4c
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    cl-make-random-state was not copying its arg
    
    Problem reported by Xu Chunyang (Bug#33731).
    * lisp/emacs-lisp/cl-extra.el (cl-make-random-state):
    Use copy-sequence, not copy-tree, so that the record is copied.
    * test/lisp/emacs-lisp/cl-extra-tests.el:
    (cl-extra-test-cl-make-random-state): New test.
---
 lisp/emacs-lisp/cl-extra.el            | 2 +-
 test/lisp/emacs-lisp/cl-extra-tests.el | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index 36b65f9..c38b495 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -484,7 +484,7 @@ Optional second arg STATE is a random-state object."
 If STATE is t, return a new state object seeded from the time of day."
   (unless state (setq state cl--random-state))
   (if (cl-random-state-p state)
-      (copy-tree state t)
+      (copy-sequence state)
     (cl--make-random-state (if (integerp state) state (cl--random-time)))))
 
 ;; Implementation limits.
diff --git a/test/lisp/emacs-lisp/cl-extra-tests.el 
b/test/lisp/emacs-lisp/cl-extra-tests.el
index baad8eb..fe59703 100644
--- a/test/lisp/emacs-lisp/cl-extra-tests.el
+++ b/test/lisp/emacs-lisp/cl-extra-tests.el
@@ -94,4 +94,9 @@
     (should (equal (list lst3 (cdr lst3) (cddr lst3))
                    (cl-maplist fn3 lst lst2 lst3)))))
 
+(ert-deftest cl-extra-test-cl-make-random-state ()
+  (let ((s (cl-make-random-state)))
+    ;; Test for Bug#33731.
+    (should-not (eq s (cl-make-random-state s)))))
+
 ;;; cl-extra-tests.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]