aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2025-01-26 22:15:50 -0800
committerPaul Eggert2025-01-26 23:05:55 -0800
commitf809302fe5543e20ff7f06a81c263fd29f3ff995 (patch)
treeb686802b73293d4fb46cad5eb48b94da0905289e
parent901659bb7046bef4ca10490cf47644fb2bc6d753 (diff)
downloademacs-f809302fe5543e20ff7f06a81c263fd29f3ff995.tar.gz
emacs-f809302fe5543e20ff7f06a81c263fd29f3ff995.zip
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.
-rw-r--r--src/gtkutil.c10
1 files 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)
1424 xbg.blue |= xbg.blue << 8; 1424 xbg.blue |= xbg.blue << 8;
1425#endif 1425#endif
1426 { 1426 {
1427 const char format[] = "* { background-color: #%02x%02x%02x; }"; 1427 static char const format[] = "* { background-color: #%02x%02x%02x; }";
1428 /* The format is always longer than the resulting string. */ 1428 char buffer[sizeof format + 3 * INT_STRLEN_BOUND (xbg.red)];
1429 char buffer[sizeof format]; 1429 sprintf (buffer, format, xbg.red >> 8, xbg.green >> 8, xbg.blue >> 8);
1430 int n = snprintf(buffer, sizeof buffer, format,
1431 xbg.red >> 8, xbg.green >> 8, xbg.blue >> 8);
1432 eassert (n > 0);
1433 eassert (n < sizeof buffer);
1434 GtkCssProvider *provider = gtk_css_provider_new (); 1430 GtkCssProvider *provider = gtk_css_provider_new ();
1435 gtk_css_provider_load_from_data (provider, buffer, -1, NULL); 1431 gtk_css_provider_load_from_data (provider, buffer, -1, NULL);
1436 gtk_style_context_add_provider (gtk_widget_get_style_context(w), 1432 gtk_style_context_add_provider (gtk_widget_get_style_context(w),