From 2d53f8783ff8e48d91809741adab6a2402587fad Mon Sep 17 00:00:00 2001
From: Eli Zaretskii <eliz@gnu.org>
Date: Sat, 16 Sep 2017 13:02:31 +0300
Subject: [PATCH] Fix order of sorted overlays returned by 'overlays-at'

* src/buffer.c (Foverlays_at): If SORTED is non-nil, reverse the
list of results, to have their order as per the documentation.
(Bug#28390)

* etc/NEWS: Mention the change in the behavior of overlays-at.
---
 etc/NEWS     | 8 ++++++++
 src/buffer.c | 6 ++++++
 2 files changed, 14 insertions(+)

diff --git a/etc/NEWS b/etc/NEWS
index ce828043bb7..a042ce92aff 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1336,6 +1336,14 @@ Affected functions include add-name-to-file, copy-directory,
 copy-file, format-write-file, gnus-copy-file, make-symbolic-link,
 rename-file, thumbs-rename-images, and write-file.
 
+---
+** The list returned by 'overlays-at' is now in decreasing priority order.
+The documentation of this function always said the order should be
+that of decreasing priority, if the 2nd argument of the function is
+non-nil, but the code returned the list in the increasing order of
+priority instead.  Now the code does what the documentation says it
+should do.
+
 
 * Lisp Changes in Emacs 26.1
 
diff --git a/src/buffer.c b/src/buffer.c
index bc28ac7d1aa..76670b89545 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -4179,6 +4179,12 @@ If SORTED is non-nil, then sort them by decreasing priority.  */)
   /* Make a list of them all.  */
   result = Flist (noverlays, overlay_vec);
 
+  /* The doc string says the list should be in decreasing order of
+     priority, so we reverse the list, because sort_overlays sorts in
+     the increasing order of priority.  */
+  if (!NILP (sorted))
+    result = Fnreverse (result);
+
   xfree (overlay_vec);
   return result;
 }
-- 
2.39.5