Subject: Re: bug#77924: 31.0.50; [Feature branch] Change marker implementation

From: Eli Zaretskii <[email-masked]>
Date: Fri, 25 Apr 2025 10:45:23 +0300

> From: Gerd Möllmann <[email-masked]>
> Date: Fri, 25 Apr 2025 09:20:55 +0200
> Cc: [email-masked], [email-masked], [email-masked],
>  [email-masked]
> 
> 
> > On 25. Apr 2025, at 09:01, Eli Zaretskii <[email-masked]> wrote:
> > 
> > 
> >> 
> >> From: Gerd Möllmann <[email-masked]>
> >> Cc: Eli Zaretskii <[email-masked]>,  [email-masked],
> >>  [email-masked],  [email-masked]
> >> Date: Thu, 24 Apr 2025 21:53:05 +0200
> >> 
> >> Pip Cet <[email-masked]> writes:
> >> 
> >>> I think what we should do is mimic FOR_EACH_TAIL, and use
> >>> FOR_EACH_MARKER like this:
> >>> 
> >>> struct Lisp_Marker *m;
> >>> FOR_EACH_MARKER (b, m)
> >>>  {
> >>>    /* do something with m */
> >>>  }
> >> 
> >> We need an if somewhere for the MARKERP, don't we?
> > 
> > Why is that needed, btw?  Can't we change the representation and/or
> > the functions involved to avoid the need for such a test?
> 
> When markers are freed their entry in the market vector no longer contains a marker reference. 

I understand, but why does this need to be tested inside the loop?
Can't the loop itself know how many markers are in the vector, and
stop when they are exhausted?