Subject: Re: bug#63564: 29.0.91; (setcdr) behaves differently between natively and byte compiled code

From: Jimmy Wong <[email-masked]>
Date: Thu, 18 May 2023 18:45:01 +0100

As Mattias has noted, this commit on markdown-mode did fix the issues, it would still be nice to know why the natively compiled version behaves differently from the byte compiled version tho. This could be good learning for occasional elisp devs such as myself to know what to watch out for.

https://github.com/jrblevin/markdown-mode/commit/44f0e89534e6e5b3e752759d513f4a6f9757b9ee
On 18 May 2023 at 8:54 AM +0100, Andrea Corallo <[email-masked]>, wrote:
> Eli Zaretskii <[email-masked]> writes:
>
> > > From: Jimmy Yuen Ho Wong <[email-masked]>
> > > Date: Thu, 18 May 2023 03:40:40 +0100
> > >
> > >
> > > Users have discovered there's a markdown-mode function that behaves
> > > differently depending Emacs is executing byte-compiled code or natively
> > > compiled code.
> > >
> > > The issue is documented
> > > [here](https://github.com/jrblevin/markdown-mode/issues/578).
> > >
> > >
> > > There are two examples in the issue that will produce an `Wrong type
> > > argument: consp, nil` error on the natively compiled version of
> > > `markdown-imenu-create-nested-index`, but not the byte-compiled or
> > > interpreted version. A user has provided a disassembly of the natively
> > > compiled code for that function.
> > >
> > > The last user has said and I can confirm the offending line seems to be `(setcdr
> > > sibling-alist alist)` in that function.
> > >
> > > Much appreciate it if Andrea could take a look.
> >
> > Adding Andrea.
> >
> > While, of course, Andrea's help will be appreciated, there's currently
> > no reason to believe this is a problem in the Emacs core, and
> > therefore filing a bug report here could be premature. Ideally, the
> > markdown-mode's developers should examine the problem first and
> > present convincing evidence that this is a problem with native
> > compilation and not with the code in markdown-mode itself.
>
> Yep, if markdown-mode's developers could present a reproducer showing
> how exactly the function miss-behaves and where that would help.
>
> Andrea