Fix unlikely eassert failure in pgtk_enumerate_devices

* src/pgtkterm.c (pgtk_enumerate_devices): Prefer
make_formatted_string to snprintf + build_string + eassert, as
it’s simpler and won’t crash Emacs if the eassert fails.
This commit is contained in:
Paul Eggert 2025-01-26 22:15:50 -08:00
parent f8b8dddce9
commit 901659bb70

View file

@ -158,8 +158,6 @@ pgtk_enumerate_devices (struct pgtk_display_info *dpyinfo,
struct pgtk_device_t *rec;
GList *all_seats, *devices_on_seat, *tem, *t1;
GdkSeat *seat;
char printbuf[1026]; /* Believe it or not, some device names are
actually almost this long. */
block_input ();
all_seats = gdk_display_list_seats (dpyinfo->gdpy);
@ -187,13 +185,10 @@ pgtk_enumerate_devices (struct pgtk_display_info *dpyinfo,
rec = xmalloc (sizeof *rec);
rec->seat = g_object_ref (seat);
rec->device = GDK_DEVICE (t1->data);
int len = snprintf (printbuf, sizeof printbuf, "%u:%s",
gdk_device_get_source (rec->device),
gdk_device_get_name (rec->device));
eassert (len < sizeof printbuf);
rec->name = build_string (printbuf);
rec->name = (make_formatted_string
("%u:%s",
gdk_device_get_source (rec->device),
gdk_device_get_name (rec->device)));
rec->next = dpyinfo->devices;
dpyinfo->devices = rec;
}