branch: elpa/undo-fu-session
commit 93739226875cd3a5d36c25f05d1f6bc5bb1dd621
Author: Campbell Barton <[email protected]>
Commit: Campbell Barton <[email protected]>
Fix: guard prin1 against print-length/print-level truncation
---
changelog.rst | 1 +
undo-fu-session.el | 11 ++++++++---
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/changelog.rst b/changelog.rst
index 72d2f45ba67..4dde936e5fb 100644
--- a/changelog.rst
+++ b/changelog.rst
@@ -6,6 +6,7 @@ Change Log
- Unreleased
- Fix undo session files using wrong extension (``.nil`` instead of writing
``.el`` files).
+ - Fix ``print-length`` & ``print-level`` settings corrupting saved undo data.
- Version 0.7 (2024-07-07)
diff --git a/undo-fu-session.el b/undo-fu-session.el
index 571e1302276..f5eb3978904 100755
--- a/undo-fu-session.el
+++ b/undo-fu-session.el
@@ -721,9 +721,14 @@ Argument PENDING-LIST a `pending-undo-list' compatible
list."
(undo-fu-session--with-auto-compression-mode
(with-temp-buffer
- (prin1 content-header (current-buffer))
- (write-char ?\n (current-buffer))
- (prin1 content-data (current-buffer))
+ ;; Prevent user/package settings from truncating the output,
+ ;; otherwise `prin1' silently writes data that `read' cannot parse.
+ (let ((print-length nil)
+ (print-level nil)
+ (print-circle nil))
+ (prin1 content-header (current-buffer))
+ (write-char ?\n (current-buffer))
+ (prin1 content-data (current-buffer)))
(let ((create-lockfiles nil))
(write-region nil nil undo-file nil 0))
t)))))