summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2016-01-16 15:56:03 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2016-01-16 15:56:03 +0100
commitce80a0e727fb4152462641209f41fea735ee459f (patch)
tree5587917d15fde290b44c178c5cc8e7a362f2a9a8
parent6e57a371ff92b47bb0876db853158c1e73d4d586 (diff)
downloadorg-mode-ce80a0e727fb4152462641209f41fea735ee459f.tar.gz
Fix memory leak in `org-agenda-prepare-buffers'
* lisp/org.el (org-agenda-prepare-buffers): Do not use `org-uniquify-alist' since it uses `eq' for comparison, whereas where are using strings as keys. Reported-by: Vincent Emanuele <vincent.emanuele@gmail.com> <http://permalink.gmane.org/gmane.emacs.orgmode/104196>
-rwxr-xr-xlisp/org.el12
1 files changed, 8 insertions, 4 deletions
diff --git a/lisp/org.el b/lisp/org.el
index f741d5e..51c4c4a 100755
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -18755,10 +18755,14 @@ When a buffer is unmodified, it is just killed. When modified, it is saved
(append org-tag-alist-for-agenda
org-tag-alist
org-tag-persistent-alist)))
- (if org-group-tags
- (setq org-tag-groups-alist-for-agenda
- (org-uniquify-alist
- (append org-tag-groups-alist-for-agenda org-tag-groups-alist))))
+ ;; Merge current file's tag groups into global
+ ;; `org-tag-groups-alist-for-agenda'.
+ (when org-group-tags
+ (dolist (alist org-tag-groups-alist)
+ (let ((old (assoc (car alist) org-tag-groups-alist-for-agenda)))
+ (if old
+ (setcdr old (org-uniquify (append (cdr old) (cdr alist))))
+ (push alist org-tag-groups-alist-for-agenda)))))
(org-with-silent-modifications
(save-excursion
(remove-text-properties (point-min) (point-max) pall)