Mercurial > emacs
changeset 105124:ff7266798210
(bookmark-write-file): Avoid calling `pp' with large
list, to workaround performance problem (bug#4485).
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sun, 20 Sep 2009 14:54:17 +0000 |
parents | 617489f8a7ad |
children | 5b60f304b8d9 |
files | lisp/ChangeLog lisp/bookmark.el |
diffstat | 2 files changed, 15 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sun Sep 20 05:40:50 2009 +0000 +++ b/lisp/ChangeLog Sun Sep 20 14:54:17 2009 +0000 @@ -1,3 +1,8 @@ +2009-09-20 Thierry Volpiatto <thierry.volpiatto@gmail.com> + + * bookmark.el (bookmark-write-file): Avoid calling `pp' with large + list, to workaround performance problem (bug#4485). + 2009-09-20 Nick Roberts <nickrob@snap.net.nz> * progmodes/gud.el (gud-sentinel): Revert indavertant change. @@ -17,8 +22,8 @@ 2009-09-19 Chong Yidong <cyd@stupidchicken.com> - * emacs-lisp/advice.el (ad-get-argument, ad-set-argument): Doc - fix (Bug#3932). + * emacs-lisp/advice.el (ad-get-argument, ad-set-argument): + Doc fix (Bug#3932). * subr.el (baud-rate): Remove long-obsolete function (Bug#4372). @@ -26,8 +31,8 @@ (time-stamp-dd/mm/yyyy, time-stamp-mon-dd-yyyy) (time-stamp-dd-mon-yy, time-stamp-yy/mm/dd) (time-stamp-yyyy/mm/dd, time-stamp-yyyy-mm-dd) - (time-stamp-yymmdd, time-stamp-hh:mm:ss, time-stamp-hhmm): Remove - functions that have been obsolete since 1995 (Bug#4436). + (time-stamp-yymmdd, time-stamp-hh:mm:ss, time-stamp-hhmm): + Remove functions that have been obsolete since 1995 (Bug#4436). * progmodes/sh-script.el (sh-learn-buffer-indent): Pop to the indent buffer only if called interactively (Bug#4452).
--- a/lisp/bookmark.el Sun Sep 20 05:40:50 2009 +0000 +++ b/lisp/bookmark.el Sun Sep 20 14:54:17 2009 +0000 @@ -1301,7 +1301,12 @@ (let ((print-length nil) (print-level nil)) (bookmark-insert-file-format-version-stamp) - (pp bookmark-alist (current-buffer)) + (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 ")") (let ((version-control (cond ((null bookmark-version-control) nil)