aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c40
1 files changed, 25 insertions, 15 deletions
diff --git a/src/buffer.c b/src/buffer.c
index e42dbb2befd..ff05da6d0d9 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -892,8 +892,8 @@ drop_overlay (struct buffer *b, struct Lisp_Overlay *ov)
892 eassert (b == XBUFFER (Fmarker_buffer (ov->start))); 892 eassert (b == XBUFFER (Fmarker_buffer (ov->start)));
893 modify_overlay (b, marker_position (ov->start), 893 modify_overlay (b, marker_position (ov->start),
894 marker_position (ov->end)); 894 marker_position (ov->end));
895 Fset_marker (ov->start, Qnil, Qnil); 895 unchain_marker (XMARKER (ov->start));
896 Fset_marker (ov->end, Qnil, Qnil); 896 unchain_marker (XMARKER (ov->end));
897 897
898} 898}
899 899
@@ -3843,7 +3843,8 @@ for the front of the overlay advance when text is inserted there
3843The fifth arg REAR-ADVANCE, if non-nil, makes the marker 3843The fifth arg REAR-ADVANCE, if non-nil, makes the marker
3844for the rear of the overlay advance when text is inserted there 3844for the rear of the overlay advance when text is inserted there
3845\(which means the text *is* included in the overlay). */) 3845\(which means the text *is* included in the overlay). */)
3846 (Lisp_Object beg, Lisp_Object end, Lisp_Object buffer, Lisp_Object front_advance, Lisp_Object rear_advance) 3846 (Lisp_Object beg, Lisp_Object end, Lisp_Object buffer,
3847 Lisp_Object front_advance, Lisp_Object rear_advance)
3847{ 3848{
3848 Lisp_Object overlay; 3849 Lisp_Object overlay;
3849 struct buffer *b; 3850 struct buffer *b;
@@ -3852,12 +3853,11 @@ for the rear of the overlay advance when text is inserted there
3852 XSETBUFFER (buffer, current_buffer); 3853 XSETBUFFER (buffer, current_buffer);
3853 else 3854 else
3854 CHECK_BUFFER (buffer); 3855 CHECK_BUFFER (buffer);
3855 if (MARKERP (beg) 3856
3856 && ! EQ (Fmarker_buffer (beg), buffer)) 3857 if (MARKERP (beg) && !EQ (Fmarker_buffer (beg), buffer))
3857 error ("Marker points into wrong buffer"); 3858 signal_error ("Marker points into wrong buffer", beg);
3858 if (MARKERP (end) 3859 if (MARKERP (end) && !EQ (Fmarker_buffer (end), buffer))
3859 && ! EQ (Fmarker_buffer (end), buffer)) 3860 signal_error ("Marker points into wrong buffer", end);
3860 error ("Marker points into wrong buffer");
3861 3861
3862 CHECK_NUMBER_COERCE_MARKER (beg); 3862 CHECK_NUMBER_COERCE_MARKER (beg);
3863 CHECK_NUMBER_COERCE_MARKER (end); 3863 CHECK_NUMBER_COERCE_MARKER (end);
@@ -3983,12 +3983,10 @@ buffer. */)
3983 if (NILP (Fbuffer_live_p (buffer))) 3983 if (NILP (Fbuffer_live_p (buffer)))
3984 error ("Attempt to move overlay to a dead buffer"); 3984 error ("Attempt to move overlay to a dead buffer");
3985 3985
3986 if (MARKERP (beg) 3986 if (MARKERP (beg) && !EQ (Fmarker_buffer (beg), buffer))
3987 && ! EQ (Fmarker_buffer (beg), buffer)) 3987 signal_error ("Marker points into wrong buffer", beg);
3988 error ("Marker points into wrong buffer"); 3988 if (MARKERP (end) && !EQ (Fmarker_buffer (end), buffer))
3989 if (MARKERP (end) 3989 signal_error ("Marker points into wrong buffer", end);
3990 && ! EQ (Fmarker_buffer (end), buffer))
3991 error ("Marker points into wrong buffer");
3992 3990
3993 CHECK_NUMBER_COERCE_MARKER (beg); 3991 CHECK_NUMBER_COERCE_MARKER (beg);
3994 CHECK_NUMBER_COERCE_MARKER (end); 3992 CHECK_NUMBER_COERCE_MARKER (end);
@@ -4170,6 +4168,9 @@ DEFUN ("overlays-at", Foverlays_at, Soverlays_at, 1, 1, 0,
4170 4168
4171 CHECK_NUMBER_COERCE_MARKER (pos); 4169 CHECK_NUMBER_COERCE_MARKER (pos);
4172 4170
4171 if (!buffer_has_overlays ())
4172 return Qnil;
4173
4173 len = 10; 4174 len = 10;
4174 /* We can't use alloca here because overlays_at can call xrealloc. */ 4175 /* We can't use alloca here because overlays_at can call xrealloc. */
4175 overlay_vec = xmalloc (len * sizeof *overlay_vec); 4176 overlay_vec = xmalloc (len * sizeof *overlay_vec);
@@ -4202,6 +4203,9 @@ end of the buffer. */)
4202 CHECK_NUMBER_COERCE_MARKER (beg); 4203 CHECK_NUMBER_COERCE_MARKER (beg);
4203 CHECK_NUMBER_COERCE_MARKER (end); 4204 CHECK_NUMBER_COERCE_MARKER (end);
4204 4205
4206 if (!buffer_has_overlays ())
4207 return Qnil;
4208
4205 len = 10; 4209 len = 10;
4206 overlay_vec = xmalloc (len * sizeof *overlay_vec); 4210 overlay_vec = xmalloc (len * sizeof *overlay_vec);
4207 4211
@@ -4230,6 +4234,9 @@ the value is (point-max). */)
4230 4234
4231 CHECK_NUMBER_COERCE_MARKER (pos); 4235 CHECK_NUMBER_COERCE_MARKER (pos);
4232 4236
4237 if (!buffer_has_overlays ())
4238 return make_number (ZV);
4239
4233 len = 10; 4240 len = 10;
4234 overlay_vec = xmalloc (len * sizeof *overlay_vec); 4241 overlay_vec = xmalloc (len * sizeof *overlay_vec);
4235 4242
@@ -4269,6 +4276,9 @@ the value is (point-min). */)
4269 4276
4270 CHECK_NUMBER_COERCE_MARKER (pos); 4277 CHECK_NUMBER_COERCE_MARKER (pos);
4271 4278
4279 if (!buffer_has_overlays ())
4280 return make_number (BEGV);
4281
4272 /* At beginning of buffer, we know the answer; 4282 /* At beginning of buffer, we know the answer;
4273 avoid bug subtracting 1 below. */ 4283 avoid bug subtracting 1 below. */
4274 if (XINT (pos) == BEGV) 4284 if (XINT (pos) == BEGV)