Subject: bug#79156: igc: igc_xpalloc_ambig SEGV

From: Stéphane Marks <[email-masked]>
Date: Sun, 3 Aug 2025 10:05:28 -0400

On Sun, Aug 3, 2025 at 8:53 AM Gerd Möllmann <[email-masked]>
wrote:

> Gerd Möllmann <[email-masked]> writes:
>
> > Pip Cet <[email-masked]> writes:
> >
> >> Gerd Möllmann <[email-masked]> writes:
> >>
> >>> Eli Zaretskii <[email-masked]> writes:
> >>>
> >>>>> Ouch. That seems to me to be a bug in how charset.c calls xpalloc,
> but
> >>>>> I'm not sure whether there are other callers that rely on this
> behavior,
> >>>>> so it's safest to work around it.
> >>>>
> >>>> xpalloc handles this case:
> >>>>
> >>>>   if (! pa)
> >>>>     *nitems = 0;
> >>>
> >>> Yeah, I'd rather check the other igc variants of xpalloc, to make sure
> >>> they are compatible with the original, even if no one else uses that
> >>> particular feature.
> >>
> >> That's what I did, I think?
> >>
> >> The code above doesn't have any effect unless we run out of memory (even
> >> then, it won't have an effect if NITEMS is a stack variable in a frame
> >> that's unwound by memory_full).
> >
> > Sorry, I'm currently to unconcentrated to follow. I just wanted to say
> > that it would be good to make the functions are compatible with xpalloc,
> > whatever that means.
>
> Do you want me to look at your patch? I'd rather just rely on you,
> though :-).
>
> And while everyone is on board: I was making emacs-mac use igc
> in my Emacs. Seems to have worked, I'm writing this from
>
>   ELISP> (and (featurep 'mac) (featurep 'mps))
>   t
>
> Only minimal additions to igc.[ch] were necessary because mac uses a
> Lisp and a GUI thread, and so on, so I couldn't use init_igc for mac.
> Two new functions in äifdef HAVE_MAC_GUI instead, igc_init_mac_early and
> _late.
>

Do you think you'll push that igc merged branch up to JD's git repo?