GNU bug report logs -
#25365
25.1; Coding system for bookmarks and desktop
Previous Next
Full log
View this message in rfc822 format
> From: Dmitri Paduchikh <dpaduchikh <at> gmail.com>
> Cc: 25365 <at> debbugs.gnu.org
> Date: Tue, 10 Jan 2017 01:34:18 +0500
>
> EZ> E.g., set a bookmark in TUTORIAL.ru, and then try saving the
> EZ> bookmark file using the Latin-1 encoding. I just tried something
> EZ> like that, and the effect was exactly as I expected: Emacs requested
> EZ> me to provide another encoding.
>
> Try this in different order. Assuming your patch applied, save bookmarks
> using latin-1. Suppose this operation passes successfully and bookmarks
> have been saved using latin-1. Then bookmark TUTORIAL.ru and save again
> not specifying encoding.
Ah, OK. Then the attached additional change should handle that use
case.
Thanks.
commit 560a384038845e37228226313eccfc8d70132553
Author: Eli Zaretskii <eliz <at> gnu.org>
AuthorDate: Tue Jan 10 17:47:10 2017 +0200
Don't use unsafe encoding for the bookmark file
* lisp/bookmark.el (bookmark-write-file): Handle the case when the
explicitly specified encoding of the bookmark file cannot encode the
additional bookmarks just added. (Bug#25365)
diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index e18362b..02dd8a9 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -1432,13 +1432,20 @@ bookmark-write-file
;; arbitrary Lisp objects being stored in bookmark records,
;; and some users create objects containing circularities.
(print-circle t))
- (bookmark-insert-file-format-version-stamp coding-system-for-write)
(insert "(")
;; Rather than a single call to `pp' we make one per bookmark.
;; Apparently `pp' has a poor algorithmic complexity, so this
;; scales a lot better. bug#4485.
(dolist (i bookmark-alist) (pp i (current-buffer)))
(insert ")")
+ ;; Make sure the specified encoding can safely encode the
+ ;; bookmarks. If it cannot, suggest utf-8-emacs as default.
+ (with-coding-priority '(utf-8-emacs)
+ (setq coding-system-for-write
+ (select-safe-coding-system (point-min) (point-max)
+ (list t coding-system-for-write))))
+ (goto-char (point-min))
+ (bookmark-insert-file-format-version-stamp coding-system-for-write)
(let ((version-control
(cond
((null bookmark-version-control) nil)
This bug report was last modified 8 years and 186 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.