Subject: bug#21058: 25.0.50; delete-dups doesn't delete all duplicates

From: Ari Roponen <[email-masked]>
Date: Wed, 15 Jul 2015 08:40:06 +0300

Tags: patch

Function delete-dups doesn't delete all duplicates from long
lists:

(delete-dups (mapcar (lambda (x) (% x 3)) (number-sequence 0 102)))
=> (0 1 2 1 0 2 1 0 2 1 0 2 ...)

The following patch seems to fix the problem.

	* lisp/subr.el (delete-dups): Fix paren typo.

diff --git a/lisp/subr.el b/lisp/subr.el
index 5bd4bb4..e2c1bae 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -426,8 +426,8 @@ one is kept."
             (let ((elt (car retail)))
               (if (gethash elt hash)
                   (setcdr tail (cdr retail))
-                (puthash elt t hash)))
-            (setq tail retail)))
+                (puthash elt t hash)
+                (setq tail retail)))))
       (let ((tail list))
         (while tail
           (setcdr tail (delete (car tail) (cdr tail)))

In GNU Emacs 25.0.50.2 (x86_64-unknown-linux-gnu, GTK+ Version 3.17.4)
 of 2015-07-14 on arirop
Repository revision: 6a7e718916d00dbacaa765669f389b86f33075f5
Windowing system distributor `Fedora Project', version 11.0.11702000
System Description:	Fedora release 23 (Rawhide)

-- 
Ari Roponen