From: Paul Eggert Date: Mon, 27 Jan 2025 06:15:50 +0000 (-0800) Subject: Fix unlikely eassert failure in xg_set_widget_bg X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fa195408db283421110eac30298dfbcbcff7ca14;p=emacs.git 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) --- 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),