Subject: Re: bug#79156: igc: igc_xpalloc_ambig SEGV

From: Gerd Möllmann <[email-masked]>
Date: Sun, 03 Aug 2025 14:52:45 +0200

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.