summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog5
-rw-r--r--src/search.c13
2 files changed, 13 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 144e4890e8e..7de0eb69cd3 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2004-06-29 David Kastrup <dak@gnu.org>
+
+ * search.c (Fset_match_data): Allow buffer before end of list
+ which can happen if set-match-data is using a pre-consed list.
+
2004-06-28 Steven Tamm <tamm@Steven-Tamms-Computer.local>
* macterm.c (XTread_socket): Correctly set the frame position
diff --git a/src/search.c b/src/search.c
index dc1ca91e38f..bd187181ecf 100644
--- a/src/search.c
+++ b/src/search.c
@@ -2808,9 +2808,16 @@ LIST should have been created by calling `match-data' previously. */)
search_regs.num_regs = length;
}
- for (i = 0; i < length; i++)
+ for (i = 0;; i++)
{
marker = Fcar (list);
+ if (BUFFERP(marker))
+ {
+ XSETBUFFER(last_thing_searched, marker);
+ break;
+ }
+ if (i >= length)
+ break;
if (NILP (marker))
{
search_regs.start[i] = -1;
@@ -2847,10 +2854,6 @@ LIST should have been created by calling `match-data' previously. */)
search_regs.start[i] = -1;
}
- if (CONSP(list) && BUFFERP(XCAR(list))) {
- XSETBUFFER(last_thing_searched, XCAR(list));
- }
-
return Qnil;
}