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)))))

Reply via email to