[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 1ca93e0: lisp/subr.el (delete-dups): Avoid nreverse
From: |
Oleh Krehel |
Subject: |
[Emacs-diffs] master 1ca93e0: lisp/subr.el (delete-dups): Avoid nreverse. |
Date: |
Wed, 06 May 2015 19:37:39 +0000 |
branch: master
commit 1ca93e01841975dab67fbc0f4cb92aff94a654d7
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>
lisp/subr.el (delete-dups): Avoid nreverse.
---
lisp/subr.el | 15 +++++++++------
1 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/lisp/subr.el b/lisp/subr.el
index a32fb96..ce9b44c 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -419,12 +419,15 @@ Of several `equal' occurrences of an element in LIST, the
first
one is kept."
(if (> (length list) 100)
(let ((hash (make-hash-table :test #'equal))
- res)
- (dolist (elt list)
- (unless (gethash elt hash)
- (puthash elt elt hash)
- (push elt res)))
- (setcdr list (cdr (nreverse res))))
+ (tail list)
+ elt retail)
+ (puthash (car list) t hash)
+ (while (setq retail (cdr tail))
+ (setq elt (car retail))
+ (if (gethash elt hash)
+ (setcdr tail (cdr retail))
+ (puthash elt t hash))
+ (setq tail retail)))
(let ((tail list))
(while tail
(setcdr tail (delete (car tail) (cdr tail)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 1ca93e0: lisp/subr.el (delete-dups): Avoid nreverse.,
Oleh Krehel <=