]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix unlikely eassert failure in xg_set_widget_bg
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 27 Jan 2025 06:15:50 +0000 (22:15 -0800)
committerEshel Yaron <me@eshelyaron.com>
Thu, 30 Jan 2025 18:07:13 +0000 (19:07 +0100)
* src/gtkutil.c (xg_set_widget_bg): Simplify by using
sprintf with a big-enough buffer.

(cherry picked from commit f809302fe5543e20ff7f06a81c263fd29f3ff995)

src/gtkutil.c

index a1a2c6cbd20376d15efc9f293d76a52a252b4240..0770874eb401c79eb52957b5da58fc4f110c0423 100644 (file)
@@ -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),