From 6e74e7746936a5584fce9c8539dd1ad96b37bb7e Mon Sep 17 00:00:00 2001 Message-Id: <6e74e7746936a5584fce9c8539dd1ad96b37bb7e.1681560403.git.yantar92@posteo.net> From: Ihor Radchenko Date: Sat, 15 Apr 2023 14:04:19 +0200 Subject: [PATCH] * lisp/org-agenda.el: Try not to modify string constants by side effect (org-agenda-propertize-selected-todo-keywords): (org-agenda-format-item): (org-agenda-highlight-todo): Make sure that we use a fresh string constant copy when adding properties. This avoids race modifications when compiler use shared object for several string constants in org-agenda. See Emacs bug#62847. Reported-by: Gustavo Barros Link: https://orgmode.org/list/CAM9ALR95F_ZHV2_WsqAz0-35-S2rwxbHqsA5VGftvq51Yz3ZAQ@mail.gmail.com --- lisp/org-agenda.el | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index 2ec2f4c00..8e6b84362 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -4923,7 +4923,9 @@ (defun org-agenda-propertize-selected-todo-keywords (keywords) "Use `org-todo-keyword-faces' for the selected todo KEYWORDS." (concat (if (or (equal keywords "ALL") (not keywords)) - (propertize "ALL" 'face 'org-agenda-structure-filter) + (propertize + (copy-sequence "ALL") ; Avoid modifying `eq' string constants. + 'face 'org-agenda-structure-filter) (mapconcat (lambda (kw) (propertize kw 'face (list (org-get-todo-face kw) 'org-agenda-structure))) @@ -7251,7 +7253,9 @@ (defvar level) (defvar tag) (defvar time)) ""))) (category-icon (org-agenda-get-category-icon category)) (category-icon (if category-icon - (propertize " " 'display category-icon) + (propertize + (copy-sequence " ") ; Avoid modifying `eq' " ". + 'display category-icon) "")) (effort (and (not (string= txt "")) (get-text-property 1 'effort txt))) @@ -7724,8 +7728,10 @@ (defun org-agenda-highlight-todo (x) (unless (string= org-agenda-todo-keyword-format "") ;; Remove `display' property as the icon could leak ;; on the white space. - (org-add-props " " (org-plist-delete (text-properties-at 0 x) - 'display))) + (org-add-props + (copy-sequence " ") ; Avoid modifying `eq' " ". + (org-plist-delete (text-properties-at 0 x) + 'display))) (substring x (match-end 3))))))) x))) -- 2.40.0