Subject: bug#76691: `display-monitor-attributes-list` not working properly on macOS

From: Ship Mints <[email-masked]>
Date: Mon, 2 Jun 2025 06:52:35 -0400

On Mon, Jun 2, 2025 at 4:02 AM Robert Pluim <[email-masked]> wrote:

> >>>>> On Wed, 28 May 2025 15:17:33 -0400, Ship Mints <[email-masked]>
> said:
>     >> It applied cleanly alongside my patch, so I think we're good. I'll
> do
>     >> a test build in a bit and I think we can get both patches pushed up
>     >> once someone with two screen checks mine.
>     >>
>     >> Do you want to finish off the commit message or should I give it a
> go?
>     >>
>
>     Ship> Nice.  Not home where I have that branch locally, so writing this
>     Ship> manually...
>
>     Ship> *snip*
>     Ship> Fix ns_make_monitor_attribute_list (bug#76691)
>
>     Ship> This is the NS implementation for
> 'display-monitor-attributes-list'.
>     Ship> Change implementation from IORegistry to direct introspection
>     Ship> of NSScreen.
>
>     Ship> * src/nsfns.m (ns_make_monitor_attribute_list): Use localizedName
>     Ship> selector on NSScreen.  For anonymous displays, synthesize names
>     Ship> of the form ("%dx%d@%d,%d" width height x y).
>     Ship> (ns_get_name_from_ioreg) (ns_screen_name): Removed.
>     Ship> *snip*
>
> The latest version of your patch that I can see still doesnʼt allocate
> space for the '\0' at the end of the monitor name for the
> localizedName case.
>

Robert, thank you for keen eyes a second time.  This was a version I found
in my email, perhaps there was a later one on my other computer.

Alan, can you please change the name allocation to be:

       m->name = xmalloc ([name lengthOfBytesUsingEncoding:
NSUTF8StringEncoding] + 1);

Thanks,

-Stephane