diff options
| author | Paul Eggert | 2025-01-26 22:15:50 -0800 |
|---|---|---|
| committer | Paul Eggert | 2025-01-26 23:05:55 -0800 |
| commit | f809302fe5543e20ff7f06a81c263fd29f3ff995 (patch) | |
| tree | b686802b73293d4fb46cad5eb48b94da0905289e | |
| parent | 901659bb7046bef4ca10490cf47644fb2bc6d753 (diff) | |
| download | emacs-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.c | 10 |
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), |