Subject: bug#65017: 29.1; Byte compiler interaction with cl-lib function objects, removes symbol-function

From: Eli Zaretskii <[email-masked]>
Date: Fri, 04 Aug 2023 08:35:30 +0300

> Cc: [email-masked], [email-masked],
>  Eric Marsden <[email-masked]>
> Date: Thu, 3 Aug 2023 21:10:56 +0000
> From: Alan Mackenzie <[email-masked]>
> 
> I think the cause is in internal_equal in src/fns.c, where the following
> code appears:
> 
>   /* A symbol with position compares the contained symbol, and is
>      `equal' to the corresponding ordinary symbol.  */
>   if (SYMBOL_WITH_POS_P (o1))
>     o1 = SYMBOL_WITH_POS_SYM (o1);
>   if (SYMBOL_WITH_POS_P (o2))
>     o2 = SYMBOL_WITH_POS_SYM (o2);
> 
> This piece of code converts symbols with positions to ordinary symbols
> without first checking symbols-with-pos-enabled.  I think this is the
> bug.
> 
> I will work on a patch to fix it (which shouldn't take long).

Thanks, but when you have a solution in hand, please also check its
effect on performance.  AFAIR, this part was tuned for optimal
performance, back when symbols with positions were introduced; it
would be a pity to lose performance due to fixing this bug, if that
can be avoided.