[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#63513: [PATCH] Make persist-defvar work with records and hash tables
From: |
Joseph Turner |
Subject: |
bug#63513: [PATCH] Make persist-defvar work with records and hash tables |
Date: |
Sun, 14 May 2023 22:56:20 -0700 |
Hello!
persist-defvar does not persist records or hash tables correctly.
Here's a minimal example with a hash table:
(progn
(persist-defvar foo (make-hash-table :test #'equal) "docstring")
(puthash 'bar t foo)
(persist-save 'foo)
(gethash 'bar (persist-default 'foo))) ;; Expected nil, got t
This patch fixes persisting records by using copy-tree. Currently,
copy-tree does not work with records (see
<https://lists.gnu.org/archive/html/bug-gnu-emacs/2023-05/msg00875.html>).
The following snippet will return the expected value only when both this
patch and the above-linked patch are applied:
(progn
(cl-defstruct baz a)
(persist-defvar quux (make-baz :a nil) "docstring")
(setf (baz-a quux) t)
(persist-save 'quux)
(baz-a (persist-default 'quux))) ;; Expected nil, got t
Before applying this patch, the updated values in both cases are not
persisted to disk. With the patch, the updated values are persisted as
expected.
Best,
Joseph
0001-Make-persist-defvar-work-with-records-and-hash-table.patch
Description: Text Data
- bug#63513: [PATCH] Make persist-defvar work with records and hash tables,
Joseph Turner <=