From e9dc1c340376b4652c2cb3f17173930d70b7e8d4 Mon Sep 17 00:00:00 2001 From: Dave Love Date: Wed, 11 Jun 2003 11:46:16 +0000 Subject: [PATCH] (buf_charpos_to_bytepos, Fset_marker) (set_marker_restricted, set_marker_both) (set_marker_restricted_both, unchain_marker) (Fbuffer_has_markers_at, count_markers): Use SET_BUF_MARKERS, MARKER_CHAIN. (unchain_marker) [BOEHM_GC]: Don't use XUNMARK, XSETMARKBIT. --- src/marker.c | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/marker.c b/src/marker.c index b91609ca084..d02714b44e1 100644 --- a/src/marker.c +++ b/src/marker.c @@ -180,7 +180,7 @@ buf_charpos_to_bytepos (b, charpos) if (best_above - best_below < 50) break; - tail = XMARKER (tail)->chain; + tail = MARKER_CHAIN (XMARKER (tail)); } /* We get here if we did not exactly hit one of the known places. @@ -366,7 +366,7 @@ buf_bytepos_to_charpos (b, bytepos) if (best_above - best_below < 50) break; - tail = XMARKER (tail)->chain; + tail = MARKER_CHAIN (XMARKER (tail)); } /* We get here if we did not exactly hit one of the known places. @@ -546,8 +546,8 @@ Returns MARKER. */) { unchain_marker (marker); m->buffer = b; - m->chain = BUF_MARKERS (b); - BUF_MARKERS (b) = marker; + XSET_MARKER_CHAIN (m, BUF_MARKERS (b)); + SET_BUF_MARKERS (b, marker); } return marker; @@ -622,8 +622,8 @@ set_marker_restricted (marker, pos, buffer) { unchain_marker (marker); m->buffer = b; - m->chain = BUF_MARKERS (b); - BUF_MARKERS (b) = marker; + XSET_MARKER_CHAIN (m, BUF_MARKERS (b)); + SET_BUF_MARKERS (b, marker); } return marker; @@ -673,8 +673,8 @@ set_marker_both (marker, buffer, charpos, bytepos) { unchain_marker (marker); m->buffer = b; - m->chain = BUF_MARKERS (b); - BUF_MARKERS (b) = marker; + XSET_MARKER_CHAIN (m, BUF_MARKERS (b)); + SET_BUF_MARKERS (b, marker); } return marker; @@ -733,8 +733,8 @@ set_marker_restricted_both (marker, buffer, charpos, bytepos) { unchain_marker (marker); m->buffer = b; - m->chain = BUF_MARKERS (b); - BUF_MARKERS (b) = marker; + XSET_MARKER_CHAIN (m, BUF_MARKERS (b)); + SET_BUF_MARKERS (b, marker); } return marker; @@ -752,7 +752,9 @@ unchain_marker (marker) register Lisp_Object marker; { register Lisp_Object tail, prev, next; +#ifndef BOEHM_GC register EMACS_INT omark; +#endif register struct buffer *b; b = XMARKER (marker)->buffer; @@ -768,14 +770,16 @@ unchain_marker (marker) prev = Qnil; while (! GC_NILP (tail)) { - next = XMARKER (tail)->chain; + next = MARKER_CHAIN (XMARKER (tail)); +#ifndef BOEHM_GC XUNMARK (next); +#endif if (XMARKER (marker) == XMARKER (tail)) { if (NILP (prev)) { - BUF_MARKERS (b) = next; + SET_BUF_MARKERS (b, next); /* Deleting first marker from the buffer's chain. Crash if new first marker in chain does not say it belongs to the same buffer, or at least that they have the same @@ -785,9 +789,13 @@ unchain_marker (marker) } else { - omark = XMARKBIT (XMARKER (prev)->chain); - XMARKER (prev)->chain = next; - XSETMARKBIT (XMARKER (prev)->chain, omark); +#ifdef BOEHM_GC + XSET_MARKER_CHAIN (XMARKER (prev), next); +#else + omark = XMARKBIT (MARKER_CHAIN (XMARKER (prev))); + XSET_MARKER_CHAIN (XMARKER (prev), next); + XSETMARKBIT (MARKER_CHAIN (XMARKER (prev)), omark); +#endif } /* We have removed the marker from the chain; no need to scan the rest of the chain. */ @@ -900,7 +908,7 @@ DEFUN ("buffer-has-markers-at", Fbuffer_has_markers_at, Sbuffer_has_markers_at, for (tail = BUF_MARKERS (current_buffer); !NILP (tail); - tail = XMARKER (tail)->chain) + tail = MARKER_CHAIN (XMARKER (tail))) if (XMARKER (tail)->charpos == charno) return Qt; @@ -918,7 +926,7 @@ count_markers (buf) for (tail = BUF_MARKERS (buf); !NILP (tail); - tail = XMARKER (tail)->chain) + tail = MARKER_CHAIN (XMARKER (tail))) total++; return total; -- 2.39.5