aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog5
-rw-r--r--src/coding.c11
2 files changed, 12 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index c92e4b5cff..570c82c962 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2002-05-11 Andreas Schwab <[email protected]>
+
+ * coding.c (intersection): Keep the elements of the returned list
+ in the same order as in the first list.
+
2002-05-11 Kim F. Storm <[email protected]>
* keymap.c (current_minor_maps): Fixed resizing of cmm_maps;
diff --git a/src/coding.c b/src/coding.c
index 8c54f86e53..baf6acf08a 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -6324,14 +6324,17 @@ static Lisp_Object
intersection (l1, l2)
Lisp_Object l1, l2;
{
- Lisp_Object val;
+ Lisp_Object val = Fcons (Qnil, Qnil), tail;
- for (val = Qnil; CONSP (l1); l1 = XCDR (l1))
+ for (tail = val; CONSP (l1); l1 = XCDR (l1))
{
if (!NILP (Fmemq (XCAR (l1), l2)))
- val = Fcons (XCAR (l1), val);
+ {
+ XSETCDR (tail, Fcons (XCAR (l1), Qnil));
+ tail = XCDR (tail);
+ }
}
- return val;
+ return XCDR (val);
}