From fa195408db283421110eac30298dfbcbcff7ca14 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 26 Jan 2025 22:15:50 -0800 Subject: [PATCH] Fix unlikely eassert failure in xg_set_widget_bg * src/gtkutil.c (xg_set_widget_bg): Simplify by using sprintf with a big-enough buffer. (cherry picked from commit f809302fe5543e20ff7f06a81c263fd29f3ff995) --- src/gtkutil.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/gtkutil.c b/src/gtkutil.c index a1a2c6cbd20..0770874eb40 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -1424,13 +1424,9 @@ xg_set_widget_bg (struct frame *f, GtkWidget *w, unsigned long pixel) xbg.blue |= xbg.blue << 8; #endif { - const char format[] = "* { background-color: #%02x%02x%02x; }"; - /* The format is always longer than the resulting string. */ - char buffer[sizeof format]; - int n = snprintf(buffer, sizeof buffer, format, - xbg.red >> 8, xbg.green >> 8, xbg.blue >> 8); - eassert (n > 0); - eassert (n < sizeof buffer); + static char const format[] = "* { background-color: #%02x%02x%02x; }"; + char buffer[sizeof format + 3 * INT_STRLEN_BOUND (xbg.red)]; + sprintf (buffer, format, xbg.red >> 8, xbg.green >> 8, xbg.blue >> 8); GtkCssProvider *provider = gtk_css_provider_new (); gtk_css_provider_load_from_data (provider, buffer, -1, NULL); gtk_style_context_add_provider (gtk_widget_get_style_context(w), -- 2.39.5