>>>>> On Wed, 5 Mar 2025 06:38:05 -0500, Ship Mints <shipmints@gmail.com> said:
Ship> #ifdef NS_IMPL_COCOA
Ship> - m->name = ns_screen_name (did);
Ship> + m->name = NULL;
Ship> + if ([s respondsToSelector:@selector(localizedName)])
Ship> + {
Ship> + NSString *name = [s valueForKey:@"localizedName"];
Ship> + if (name != NULL)
Ship> + {
Ship> + m->name = xmalloc ([name lengthOfBytesUsingEncoding: NSUTF8StringEncoding]);
Ship> + strcpy(m->name, [name UTF8String]);
Ship> + }
The reason it was crashing for me is that the xmalloc doesnʼt account
for the terminating '\0', ie we need
m->name = xmalloc ([name lengthOfBytesUsingEncoding: NSUTF8StringEncoding] + 1);
or just
m->name = xstrdup ([name UTF8String]);
Ship> + }
Ship> + /* If necessary, synthesize a name of the following form:
Ship> + %dx%d@%d,%d width height x y. */
Ship> + if (m->name == NULL)
Ship> + {
Ship> + char buf[25]; /* sufficient for 12345x78901@34567,90123 */
Ship> + snprintf (buf, sizeof(buf), "%ux%u@%d,%d",
Ship> + m->work.width, m->work.height, m->work.x, m->work.y);
Ship> + m->name = xstrdup (buf);
Ship> + }
Right. I'd changed the last patch to xstrdup.
Do you have a monitor for which macOS has no name that caused the fallback to be invoked?