emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master fbee626: Make add_to_log varargs


From: Paul Eggert
Subject: [Emacs-diffs] master fbee626: Make add_to_log varargs
Date: Thu, 13 Aug 2015 20:49:02 +0000

branch: master
commit fbee6265a72a4129d2efbf15a622b13e8b4aae9f
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Make add_to_log varargs
    
    * src/alloc.c (run_finalizer_handler):
    * src/charset.c (load_charset_map_from_vector):
    * src/nsimage.m (ns_load_image):
    * src/xfaces.c (load_pixmap, load_color2):
    Simplify, now that add_to_log has a variable number of args.
    * src/image.c (image_error): Take a variable number of args.
    Callers simplified.
    * src/lisp.h (add_to_log, vadd_to_log): Adjust to new APIs.
    * src/xdisp.c (format_nargs, vadd_to_log): New functions.
    (add_to_log): Make varargs, and reimplement in terms of vadd_to_log.
    * src/xfaces.c (merge_face_ref): Fix typo that omitted color name.
---
 src/alloc.c   |    2 +-
 src/charset.c |    2 +-
 src/image.c   |  181 ++++++++++++++++++++++++++++-----------------------------
 src/lisp.h    |    3 +-
 src/nsimage.m |    2 +-
 src/xdisp.c   |   53 ++++++++++++-----
 src/xfaces.c  |    8 +-
 7 files changed, 136 insertions(+), 115 deletions(-)

diff --git a/src/alloc.c b/src/alloc.c
index 050097c..66e62da 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3765,7 +3765,7 @@ queue_doomed_finalizers (struct Lisp_Finalizer *dest,
 static Lisp_Object
 run_finalizer_handler (Lisp_Object args)
 {
-  add_to_log ("finalizer failed: %S", args, Qnil);
+  add_to_log ("finalizer failed: %S", args);
   return Qnil;
 }
 
diff --git a/src/charset.c b/src/charset.c
index b19e344..eeebf17 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -555,7 +555,7 @@ load_charset_map_from_vector (struct charset *charset, 
Lisp_Object vec, int cont
 
   if (len % 2 == 1)
     {
-      add_to_log ("Failure in loading charset map: %V", vec, Qnil);
+      add_to_log ("Failure in loading charset map: %V", vec);
       return;
     }
 
diff --git a/src/image.c b/src/image.c
index 066db74..313419b 100644
--- a/src/image.c
+++ b/src/image.c
@@ -629,16 +629,19 @@ valid_image_p (Lisp_Object object)
 }
 
 
-/* Log error message with format string FORMAT and argument ARG.
+/* Log error message with format string FORMAT and trailing arguments.
    Signaling an error, e.g. when an image cannot be loaded, is not a
    good idea because this would interrupt redisplay, and the error
    message display would lead to another redisplay.  This function
    therefore simply displays a message.  */
 
 static void
-image_error (const char *format, Lisp_Object arg1, Lisp_Object arg2)
+image_error (const char *format, ...)
 {
-  add_to_log (format, arg1, arg2);
+  va_list ap;
+  va_start (ap, format);
+  vadd_to_log (format, ap);
+  va_end (ap);
 }
 
 
@@ -1954,7 +1957,7 @@ x_create_x_image_and_pixmap (struct frame *f, int width, 
int height, int depth,
                        depth > 16 ? 32 : depth > 8 ? 16 : 8, 0);
   if (*ximg == NULL)
     {
-      image_error ("Unable to allocate X image", Qnil, Qnil);
+      image_error ("Unable to allocate X image");
       return 0;
     }
 
@@ -1976,7 +1979,7 @@ x_create_x_image_and_pixmap (struct frame *f, int width, 
int height, int depth,
     {
       x_destroy_x_image (*ximg);
       *ximg = NULL;
-      image_error ("Unable to create X pixmap", Qnil, Qnil);
+      image_error ("Unable to create X pixmap");
       return 0;
     }
 
@@ -1997,7 +2000,7 @@ x_create_x_image_and_pixmap (struct frame *f, int width, 
int height, int depth,
   if (depth != 1 && depth != 4 && depth != 8
       && depth != 16 && depth != 24 && depth != 32)
     {
-      image_error ("Invalid image bit depth specified", Qnil, Qnil);
+      image_error ("Invalid image bit depth specified");
       return 0;
     }
 
@@ -2055,7 +2058,7 @@ x_create_x_image_and_pixmap (struct frame *f, int width, 
int height, int depth,
       Lisp_Object errcode;
       /* All system errors are < 10000, so the following is safe.  */
       XSETINT (errcode, err);
-      image_error ("Unable to create bitmap, error code %d", errcode, Qnil);
+      image_error ("Unable to create bitmap, error code %d", errcode);
       x_destroy_x_image (*ximg);
       *ximg = NULL;
       return 0;
@@ -2070,7 +2073,7 @@ x_create_x_image_and_pixmap (struct frame *f, int width, 
int height, int depth,
   if (*pixmap == 0)
     {
       *ximg = NULL;
-      image_error ("Unable to allocate NSImage for XPM pixmap", Qnil, Qnil);
+      image_error ("Unable to allocate NSImage for XPM pixmap");
       return 0;
     }
   *ximg = *pixmap;
@@ -2791,7 +2794,7 @@ xbm_read_bitmap_data (struct frame *f, unsigned char 
*contents, unsigned char *e
   if (!check_image_size (f, *width, *height))
     {
       if (!inhibit_image_error)
-       image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
+       image_error ("Invalid image size (see `max-image-size')");
       goto failure;
     }
   else if (data == NULL)
@@ -2936,13 +2939,13 @@ xbm_load_image (struct frame *f, struct image *img, 
unsigned char *contents,
       if (img->pixmap == NO_PIXMAP)
        {
          x_clear_image (f, img);
-         image_error ("Unable to create X pixmap for `%s'", img->spec, Qnil);
+         image_error ("Unable to create X pixmap for `%s'", img->spec);
        }
       else
        success_p = 1;
     }
   else
-    image_error ("Error loading XBM image `%s'", img->spec, Qnil);
+    image_error ("Error loading XBM image `%s'", img->spec);
 
   return success_p;
 }
@@ -2983,14 +2986,14 @@ xbm_load (struct frame *f, struct image *img)
       file = x_find_image_file (file_name);
       if (!STRINGP (file))
        {
-         image_error ("Cannot find image file `%s'", file_name, Qnil);
+         image_error ("Cannot find image file `%s'", file_name);
          return 0;
        }
 
       contents = slurp_file (SSDATA (file), &size);
       if (contents == NULL)
        {
-         image_error ("Error loading XBM image `%s'", img->spec, Qnil);
+         image_error ("Error loading XBM image `%s'", img->spec);
          return 0;
        }
 
@@ -3025,8 +3028,7 @@ xbm_load (struct frame *f, struct image *img)
          eassert (img->width > 0 && img->height > 0);
          if (!check_image_size (f, img->width, img->height))
            {
-             image_error ("Invalid image size (see `max-image-size')",
-                          Qnil, Qnil);
+             image_error ("Invalid image size (see `max-image-size')");
              return 0;
            }
        }
@@ -3104,7 +3106,7 @@ xbm_load (struct frame *f, struct image *img)
          else
            {
              image_error ("Unable to create pixmap for XBM image `%s'",
-                          img->spec, Qnil);
+                          img->spec);
              x_clear_image (f, img);
            }
 
@@ -3626,7 +3628,7 @@ xpm_load (struct frame *f, struct image *img)
       Lisp_Object file = x_find_image_file (specified_file);
       if (!STRINGP (file))
        {
-         image_error ("Cannot find image file `%s'", specified_file, Qnil);
+         image_error ("Cannot find image file `%s'", specified_file);
 #ifdef ALLOC_XPM_COLORS
          xpm_free_color_cache ();
 #endif
@@ -3657,7 +3659,7 @@ xpm_load (struct frame *f, struct image *img)
       Lisp_Object buffer = image_spec_value (img->spec, QCdata, NULL);
       if (!STRINGP (buffer))
        {
-         image_error ("Invalid image data `%s'", buffer, Qnil);
+         image_error ("Invalid image data `%s'", buffer);
 #ifdef ALLOC_XPM_COLORS
          xpm_free_color_cache ();
 #endif
@@ -3815,23 +3817,23 @@ xpm_load (struct frame *f, struct image *img)
       switch (rc)
        {
        case XpmOpenFailed:
-         image_error ("Error opening XPM file (%s)", img->spec, Qnil);
+         image_error ("Error opening XPM file (%s)", img->spec);
          break;
 
        case XpmFileInvalid:
-         image_error ("Invalid XPM file (%s)", img->spec, Qnil);
+         image_error ("Invalid XPM file (%s)", img->spec);
          break;
 
        case XpmNoMemory:
-         image_error ("Out of memory (%s)", img->spec, Qnil);
+         image_error ("Out of memory (%s)", img->spec);
          break;
 
        case XpmColorFailed:
-         image_error ("Color allocation error (%s)", img->spec, Qnil);
+         image_error ("Color allocation error (%s)", img->spec);
          break;
 
        default:
-         image_error ("Unknown error (%s)", img->spec, Qnil);
+         image_error ("Unknown error (%s)", img->spec);
          break;
        }
     }
@@ -4101,7 +4103,7 @@ xpm_load_image (struct frame *f,
 
   if (!check_image_size (f, width, height))
     {
-      image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
+      image_error ("Invalid image size (see `max-image-size')");
       goto failure;
     }
 
@@ -4112,7 +4114,7 @@ xpm_load_image (struct frame *f,
 #endif
       )
     {
-      image_error ("Image too large", Qnil, Qnil);
+      image_error ("Image too large");
       goto failure;
     }
 
@@ -4262,7 +4264,7 @@ xpm_load_image (struct frame *f,
   return 1;
 
  failure:
-  image_error ("Invalid XPM file (%s)", img->spec, Qnil);
+  image_error ("Invalid XPM file (%s)", img->spec);
   x_destroy_x_image (ximg);
   x_destroy_x_image (mask_img);
   x_clear_image (f, img);
@@ -4291,14 +4293,14 @@ xpm_load (struct frame *f,
       file = x_find_image_file (file_name);
       if (!STRINGP (file))
        {
-         image_error ("Cannot find image file `%s'", file_name, Qnil);
+         image_error ("Cannot find image file `%s'", file_name);
          return 0;
        }
 
       contents = slurp_file (SSDATA (file), &size);
       if (contents == NULL)
        {
-         image_error ("Error loading XPM image `%s'", img->spec, Qnil);
+         image_error ("Error loading XPM image `%s'", img->spec);
          return 0;
        }
 
@@ -4312,7 +4314,7 @@ xpm_load (struct frame *f,
       data = image_spec_value (img->spec, QCdata, NULL);
       if (!STRINGP (data))
        {
-         image_error ("Invalid image data `%s'", data, Qnil);
+         image_error ("Invalid image data `%s'", data);
          return 0;
        }
       success_p = xpm_load_image (f, img, SDATA (data),
@@ -4734,7 +4736,7 @@ XPutPixel (XImagePtr ximg, int x, int y, COLORREF color)
        *pixel = *pixel & ~(1 << x % 8);
     }
   else
-    image_error ("XPutPixel: palette image not supported", Qnil, Qnil);
+    image_error ("XPutPixel: palette image not supported");
 }
 
 #endif /* HAVE_NTGUI */
@@ -5266,14 +5268,14 @@ pbm_load (struct frame *f, struct image *img)
       file = x_find_image_file (specified_file);
       if (!STRINGP (file))
        {
-         image_error ("Cannot find image file `%s'", specified_file, Qnil);
+         image_error ("Cannot find image file `%s'", specified_file);
          return 0;
        }
 
       contents = slurp_file (SSDATA (file), &size);
       if (contents == NULL)
        {
-         image_error ("Error reading `%s'", file, Qnil);
+         image_error ("Error reading `%s'", file);
          return 0;
        }
 
@@ -5286,7 +5288,7 @@ pbm_load (struct frame *f, struct image *img)
       data = image_spec_value (img->spec, QCdata, NULL);
       if (!STRINGP (data))
        {
-         image_error ("Invalid image data `%s'", data, Qnil);
+         image_error ("Invalid image data `%s'", data);
          return 0;
        }
       p = SDATA (data);
@@ -5296,7 +5298,7 @@ pbm_load (struct frame *f, struct image *img)
   /* Check magic number.  */
   if (end - p < 2 || *p++ != 'P')
     {
-      image_error ("Not a PBM image: `%s'", img->spec, Qnil);
+      image_error ("Not a PBM image: `%s'", img->spec);
     error:
       xfree (contents);
       img->pixmap = NO_PIXMAP;
@@ -5330,7 +5332,7 @@ pbm_load (struct frame *f, struct image *img)
       break;
 
     default:
-      image_error ("Not a PBM image: `%s'", img->spec, Qnil);
+      image_error ("Not a PBM image: `%s'", img->spec);
       goto error;
     }
 
@@ -5349,14 +5351,14 @@ pbm_load (struct frame *f, struct image *img)
       max_color_idx = pbm_scan_number (&p, end);
       if (max_color_idx > 65535 || max_color_idx < 0)
        {
-         image_error ("Unsupported maximum PBM color value", Qnil, Qnil);
+         image_error ("Unsupported maximum PBM color value");
          goto error;
        }
     }
 
   if (!check_image_size (f, width, height))
     {
-      image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
+      image_error ("Invalid image size (see `max-image-size')");
       goto error;
     }
 
@@ -5430,7 +5432,7 @@ pbm_load (struct frame *f, struct image *img)
 #endif
                        x_clear_image (f, img);
                        image_error ("Invalid image size in image `%s'",
-                                    img->spec, Qnil);
+                                    img->spec);
                        goto error;
                      }
                    c = *p++;
@@ -5465,7 +5467,7 @@ pbm_load (struct frame *f, struct image *img)
 #endif
          x_clear_image (f, img);
          image_error ("Invalid image size in image `%s'",
-                      img->spec, Qnil);
+                      img->spec);
          goto error;
        }
 
@@ -5509,7 +5511,7 @@ pbm_load (struct frame *f, struct image *img)
                x_destroy_x_image (ximg);
 #endif
                image_error ("Invalid pixel value in image `%s'",
-                            img->spec, Qnil);
+                            img->spec);
                goto error;
              }
 
@@ -5800,7 +5802,7 @@ my_png_error (png_struct *png_ptr, const char *msg)
   eassert (png_ptr != NULL);
   /* Avoid compiler warning about deprecated direct access to
      png_ptr's fields in libpng versions 1.4.x.  */
-  image_error ("PNG error: %s", build_string (msg), Qnil);
+  image_error ("PNG error: %s", build_string (msg));
   PNG_LONGJMP (png_ptr);
 }
 
@@ -5809,7 +5811,7 @@ static void
 my_png_warning (png_struct *png_ptr, const char *msg)
 {
   eassert (png_ptr != NULL);
-  image_error ("PNG warning: %s", build_string (msg), Qnil);
+  image_error ("PNG warning: %s", build_string (msg));
 }
 
 /* Memory source for PNG decoding.  */
@@ -5904,7 +5906,7 @@ png_load_body (struct frame *f, struct image *img, struct 
png_load_context *c)
       file = x_find_image_file (specified_file);
       if (!STRINGP (file))
        {
-         image_error ("Cannot find image file `%s'", specified_file, Qnil);
+         image_error ("Cannot find image file `%s'", specified_file);
          return 0;
        }
 
@@ -5912,7 +5914,7 @@ png_load_body (struct frame *f, struct image *img, struct 
png_load_context *c)
       fp = emacs_fopen (SSDATA (file), "rb");
       if (!fp)
        {
-         image_error ("Cannot open image file `%s'", file, Qnil);
+         image_error ("Cannot open image file `%s'", file);
          return 0;
        }
 
@@ -5921,7 +5923,7 @@ png_load_body (struct frame *f, struct image *img, struct 
png_load_context *c)
          || png_sig_cmp (sig, 0, sizeof sig))
        {
          fclose (fp);
-         image_error ("Not a PNG file: `%s'", file, Qnil);
+         image_error ("Not a PNG file: `%s'", file);
          return 0;
        }
     }
@@ -5929,7 +5931,7 @@ png_load_body (struct frame *f, struct image *img, struct 
png_load_context *c)
     {
       if (!STRINGP (specified_data))
        {
-         image_error ("Invalid image data `%s'", specified_data, Qnil);
+         image_error ("Invalid image data `%s'", specified_data);
          return 0;
        }
 
@@ -5942,7 +5944,7 @@ png_load_body (struct frame *f, struct image *img, struct 
png_load_context *c)
       if (tbr.len < sizeof sig
          || png_sig_cmp (tbr.bytes, 0, sizeof sig))
        {
-         image_error ("Not a PNG image: `%s'", img->spec, Qnil);
+         image_error ("Not a PNG image: `%s'", img->spec);
          return 0;
        }
 
@@ -6010,7 +6012,7 @@ png_load_body (struct frame *f, struct image *img, struct 
png_load_context *c)
   if (! (width <= INT_MAX && height <= INT_MAX
         && check_image_size (f, width, height)))
     {
-      image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
+      image_error ("Invalid image size (see `max-image-size')");
       goto error;
     }
 
@@ -6668,20 +6670,20 @@ jpeg_load_body (struct frame *f, struct image *img,
       file = x_find_image_file (specified_file);
       if (!STRINGP (file))
        {
-         image_error ("Cannot find image file `%s'", specified_file, Qnil);
+         image_error ("Cannot find image file `%s'", specified_file);
          return 0;
        }
 
       fp = emacs_fopen (SSDATA (file), "rb");
       if (fp == NULL)
        {
-         image_error ("Cannot open `%s'", file, Qnil);
+         image_error ("Cannot open `%s'", file);
          return 0;
        }
     }
   else if (!STRINGP (specified_data))
     {
-      image_error ("Invalid image data `%s'", specified_data, Qnil);
+      image_error ("Invalid image data `%s'", specified_data);
       return 0;
     }
 
@@ -6703,7 +6705,7 @@ jpeg_load_body (struct frame *f, struct image *img,
          }
 
        case MY_JPEG_INVALID_IMAGE_SIZE:
-         image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
+         image_error ("Invalid image size (see `max-image-size')");
          break;
 
        case MY_JPEG_CANNOT_CREATE_X:
@@ -7183,7 +7185,7 @@ tiff_load (struct frame *f, struct image *img)
       file = x_find_image_file (specified_file);
       if (!STRINGP (file))
        {
-         image_error ("Cannot find image file `%s'", specified_file, Qnil);
+         image_error ("Cannot find image file `%s'", specified_file);
          return 0;
        }
 # ifdef WINDOWSNT
@@ -7194,7 +7196,7 @@ tiff_load (struct frame *f, struct image *img)
       tiff = TIFFOpen (SSDATA (file), "r");
       if (tiff == NULL)
        {
-         image_error ("Cannot open `%s'", file, Qnil);
+         image_error ("Cannot open `%s'", file);
          return 0;
        }
     }
@@ -7202,7 +7204,7 @@ tiff_load (struct frame *f, struct image *img)
     {
       if (!STRINGP (specified_data))
        {
-         image_error ("Invalid image data `%s'", specified_data, Qnil);
+         image_error ("Invalid image data `%s'", specified_data);
          return 0;
        }
 
@@ -7222,7 +7224,7 @@ tiff_load (struct frame *f, struct image *img)
 
       if (!tiff)
        {
-         image_error ("Cannot open memory source for `%s'", img->spec, Qnil);
+         image_error ("Cannot open memory source for `%s'", img->spec);
          return 0;
        }
     }
@@ -7248,7 +7250,7 @@ tiff_load (struct frame *f, struct image *img)
 
   if (!check_image_size (f, width, height))
     {
-      image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
+      image_error ("Invalid image size (see `max-image-size')");
       TIFFClose (tiff);
       return 0;
     }
@@ -7278,7 +7280,7 @@ tiff_load (struct frame *f, struct image *img)
   TIFFClose (tiff);
   if (!rc)
     {
-      image_error ("Error reading TIFF image `%s'", img->spec, Qnil);
+      image_error ("Error reading TIFF image `%s'", img->spec);
       xfree (buf);
       return 0;
     }
@@ -7615,7 +7617,7 @@ gif_load (struct frame *f, struct image *img)
       file = x_find_image_file (specified_file);
       if (!STRINGP (file))
        {
-         image_error ("Cannot find image file `%s'", specified_file, Qnil);
+         image_error ("Cannot find image file `%s'", specified_file);
          return 0;
        }
 #ifdef WINDOWSNT
@@ -7627,7 +7629,7 @@ gif_load (struct frame *f, struct image *img)
       gif = DGifOpenFileName (SSDATA (file));
       if (gif == NULL)
        {
-         image_error ("Cannot open `%s'", file, Qnil);
+         image_error ("Cannot open `%s'", file);
          return 0;
        }
 #else
@@ -7644,7 +7646,7 @@ gif_load (struct frame *f, struct image *img)
     {
       if (!STRINGP (specified_data))
        {
-         image_error ("Invalid image data `%s'", specified_data, Qnil);
+         image_error ("Invalid image data `%s'", specified_data);
          return 0;
        }
 
@@ -7658,7 +7660,7 @@ gif_load (struct frame *f, struct image *img)
       gif = DGifOpen (&memsrc, gif_read_from_memory);
       if (!gif)
        {
-         image_error ("Cannot open memory source `%s'", img->spec, Qnil);
+         image_error ("Cannot open memory source `%s'", img->spec);
          return 0;
        }
 #else
@@ -7675,7 +7677,7 @@ gif_load (struct frame *f, struct image *img)
   /* Before reading entire contents, check the declared image size. */
   if (!check_image_size (f, gif->SWidth, gif->SHeight))
     {
-      image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
+      image_error ("Invalid image size (see `max-image-size')");
       gif_close (gif, NULL);
       return 0;
     }
@@ -7684,7 +7686,7 @@ gif_load (struct frame *f, struct image *img)
   rc = DGifSlurp (gif);
   if (rc == GIF_ERROR || gif->ImageCount <= 0)
     {
-      image_error ("Error reading `%s'", img->spec, Qnil);
+      image_error ("Error reading `%s'", img->spec);
       gif_close (gif, NULL);
       return 0;
     }
@@ -7714,7 +7716,7 @@ gif_load (struct frame *f, struct image *img)
 
   if (!check_image_size (f, width, height))
     {
-      image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
+      image_error ("Invalid image size (see `max-image-size')");
       gif_close (gif, NULL);
       return 0;
     }
@@ -7732,7 +7734,7 @@ gif_load (struct frame *f, struct image *img)
             && 0 <= subimg_top && subimg_top <= height - subimg_height
             && 0 <= subimg_left && subimg_left <= width - subimg_width))
        {
-         image_error ("Subimage does not fit in image", Qnil, Qnil);
+         image_error ("Subimage does not fit in image");
          gif_close (gif, NULL);
          return 0;
        }
@@ -7971,7 +7973,7 @@ gif_load (struct frame *f, struct image *img)
        image_error ("Error closing `%s': %s",
                     img->spec, build_string (error_text));
 #else
-      image_error ("Error closing `%s'", img->spec, Qnil);
+      image_error ("Error closing `%s'", img->spec);
 #endif
     }
 
@@ -8220,9 +8222,7 @@ imagemagick_error (MagickWand *wand)
   ExceptionType severity;
 
   description = MagickGetException (wand, &severity);
-  image_error ("ImageMagick error: %s",
-              build_string (description),
-              Qnil);
+  image_error ("ImageMagick error: %s", build_string (description));
   MagickRelinquishMemory (description);
 }
 
@@ -8383,8 +8383,7 @@ imagemagick_compute_animated_image (MagickWand 
*super_wand, int ino)
          DestroyMagickWand (composite_wand);
          DestroyMagickWand (sub_wand);
          cache->wand = NULL;
-         image_error ("Imagemagick pixel iterator creation failed",
-                      Qnil, Qnil);
+         image_error ("Imagemagick pixel iterator creation failed");
          return NULL;
        }
 
@@ -8395,8 +8394,7 @@ imagemagick_compute_animated_image (MagickWand 
*super_wand, int ino)
          DestroyMagickWand (sub_wand);
          DestroyPixelIterator (source_iterator);
          cache->wand = NULL;
-         image_error ("Imagemagick pixel iterator creation failed",
-                      Qnil, Qnil);
+         image_error ("Imagemagick pixel iterator creation failed");
          return NULL;
        }
 
@@ -8571,7 +8569,7 @@ imagemagick_load_image (struct frame *f, struct image 
*img,
       status = MagickScaleImage (image_wand, desired_width, desired_height);
       if (status == MagickFalse)
        {
-         image_error ("Imagemagick scale failed", Qnil, Qnil);
+         image_error ("Imagemagick scale failed");
          imagemagick_error (image_wand);
          goto imagemagick_error;
        }
@@ -8621,7 +8619,7 @@ imagemagick_load_image (struct frame *f, struct image 
*img,
       status = MagickRotateImage (image_wand, bg_wand, rotation);
       if (status == MagickFalse)
         {
-          image_error ("Imagemagick image rotate failed", Qnil, Qnil);
+          image_error ("Imagemagick image rotate failed");
          imagemagick_error (image_wand);
           goto imagemagick_error;
         }
@@ -8651,7 +8649,7 @@ imagemagick_load_image (struct frame *f, struct image 
*img,
   if (! (image_width <= INT_MAX && image_height <= INT_MAX
         && check_image_size (f, image_width, image_height)))
     {
-      image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
+      image_error ("Invalid image size (see `max-image-size')");
       goto imagemagick_error;
     }
 
@@ -8678,7 +8676,7 @@ imagemagick_load_image (struct frame *f, struct image 
*img,
 #ifdef COLOR_TABLE_SUPPORT
          free_color_table ();
 #endif
-         image_error ("Imagemagick X bitmap allocation failure", Qnil, Qnil);
+         image_error ("Imagemagick X bitmap allocation failure");
          goto imagemagick_error;
        }
 
@@ -8718,7 +8716,7 @@ imagemagick_load_image (struct frame *f, struct image 
*img,
 #ifdef COLOR_TABLE_SUPPORT
          free_color_table ();
 #endif
-          image_error ("Imagemagick X bitmap allocation failure", Qnil, Qnil);
+          image_error ("Imagemagick X bitmap allocation failure");
           goto imagemagick_error;
         }
 
@@ -8734,8 +8732,7 @@ imagemagick_load_image (struct frame *f, struct image 
*img,
          free_color_table ();
 #endif
          x_destroy_x_image (ximg);
-          image_error ("Imagemagick pixel iterator creation failed",
-                       Qnil, Qnil);
+          image_error ("Imagemagick pixel iterator creation failed");
           goto imagemagick_error;
         }
 
@@ -8787,7 +8784,7 @@ imagemagick_load_image (struct frame *f, struct image 
*img,
 
   MagickWandTerminus ();
   /* TODO more cleanup.  */
-  image_error ("Error parsing IMAGEMAGICK image `%s'", img->spec, Qnil);
+  image_error ("Error parsing IMAGEMAGICK image `%s'", img->spec);
   return 0;
 }
 
@@ -8811,7 +8808,7 @@ imagemagick_load (struct frame *f, struct image *img)
       file = x_find_image_file (file_name);
       if (!STRINGP (file))
        {
-         image_error ("Cannot find image file `%s'", file_name, Qnil);
+         image_error ("Cannot find image file `%s'", file_name);
          return 0;
        }
 #ifdef WINDOWSNT
@@ -8828,7 +8825,7 @@ imagemagick_load (struct frame *f, struct image *img)
       data = image_spec_value (img->spec, QCdata, NULL);
       if (!STRINGP (data))
        {
-         image_error ("Invalid image data `%s'", data, Qnil);
+         image_error ("Invalid image data `%s'", data);
          return 0;
        }
       success_p = imagemagick_load_image (f, img, SDATA (data),
@@ -9092,7 +9089,7 @@ svg_load (struct frame *f, struct image *img)
       file = x_find_image_file (file_name);
       if (!STRINGP (file))
        {
-         image_error ("Cannot find image file `%s'", file_name, Qnil);
+         image_error ("Cannot find image file `%s'", file_name);
          return 0;
        }
 
@@ -9100,7 +9097,7 @@ svg_load (struct frame *f, struct image *img)
       contents = slurp_file (SSDATA (file), &size);
       if (contents == NULL)
        {
-         image_error ("Error loading SVG image `%s'", img->spec, Qnil);
+         image_error ("Error loading SVG image `%s'", img->spec);
          return 0;
        }
       /* If the file was slurped into memory properly, parse it.  */
@@ -9116,7 +9113,7 @@ svg_load (struct frame *f, struct image *img)
       data = image_spec_value (img->spec, QCdata, NULL);
       if (!STRINGP (data))
        {
-         image_error ("Invalid image data `%s'", data, Qnil);
+         image_error ("Invalid image data `%s'", data);
          return 0;
        }
       original_filename = BVAR (current_buffer, filename);
@@ -9183,7 +9180,7 @@ svg_load_image (struct frame *f,         /* Pointer to 
emacs frame structure.  *
   rsvg_handle_get_dimensions (rsvg_handle, &dimension_data);
   if (! check_image_size (f, dimension_data.width, dimension_data.height))
     {
-      image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
+      image_error ("Invalid image size (see `max-image-size')");
       goto rsvg_error;
     }
 
@@ -9315,7 +9312,7 @@ svg_load_image (struct frame *f,         /* Pointer to 
emacs frame structure.  *
   g_object_unref (rsvg_handle);
   /* FIXME: Use error->message so the user knows what is the actual
      problem with the image.  */
-  image_error ("Error parsing SVG image `%s'", img->spec, Qnil);
+  image_error ("Error parsing SVG image `%s'", img->spec);
   g_error_free (err);
   return 0;
 }
@@ -9468,7 +9465,7 @@ gs_load (struct frame *f, struct image *img)
   if (! (in_width <= INT_MAX && in_height <= INT_MAX
         && check_image_size (f, in_width, in_height)))
     {
-      image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
+      image_error ("Invalid image size (see `max-image-size')");
       return 0;
     }
   img->width = in_width;
@@ -9489,7 +9486,7 @@ gs_load (struct frame *f, struct image *img)
 
   if (!img->pixmap)
     {
-      image_error ("Unable to create pixmap for `%s'", img->spec, Qnil);
+      image_error ("Unable to create pixmap for `%s'", img->spec);
       return 0;
     }
 
@@ -9602,7 +9599,7 @@ x_kill_gs_process (Pixmap pixmap, struct frame *f)
        }
       else
        image_error ("Cannot get X image of `%s'; colors will not be freed",
-                    img->spec, Qnil);
+                    img->spec);
 
       unblock_input ();
     }
diff --git a/src/lisp.h b/src/lisp.h
index 02109d7..2545203 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3667,7 +3667,8 @@ extern Lisp_Object sit_for (Lisp_Object, bool, int);
 /* Defined in xdisp.c.  */
 extern bool noninteractive_need_newline;
 extern Lisp_Object echo_area_buffer[2];
-extern void add_to_log (const char *, Lisp_Object, Lisp_Object);
+extern void add_to_log (char const *, ...);
+extern void vadd_to_log (char const *, va_list);
 extern void check_message_stack (void);
 extern void setup_echo_area_for_printing (bool);
 extern bool push_message (void);
diff --git a/src/nsimage.m b/src/nsimage.m
index 9302cd2..13e8504 100644
--- a/src/nsimage.m
+++ b/src/nsimage.m
@@ -102,7 +102,7 @@ ns_load_image (struct frame *f, struct image *img,
 
   if (eImg == nil)
     {
-      add_to_log ("Unable to load image %s", img->spec, Qnil);
+      add_to_log ("Unable to load image %s", img->spec);
       return 0;
     }
 
diff --git a/src/xdisp.c b/src/xdisp.c
index 9b76174..52c77bd 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -9797,27 +9797,50 @@ include the height of both, if present, in the return 
value.  */)
                               Messages
  ***********************************************************************/
 
+/* Return the number of arguments the format string FORMAT needs.  */
 
-/* Add a message with format string FORMAT and arguments ARG1 and ARG2
+static ptrdiff_t
+format_nargs (char const *format)
+{
+  ptrdiff_t nargs = 0;
+  for (char const *p = format; (p = strchr (p, '%')); p++)
+    if (p[1] == '%')
+      p++;
+    else
+      nargs++;
+  return nargs;
+}
+
+/* Add a message with format string FORMAT and formatted arguments
    to *Messages*.  */
 
 void
-add_to_log (const char *format, Lisp_Object arg1, Lisp_Object arg2)
+add_to_log (const char *format, ...)
 {
-  Lisp_Object msg, fmt;
-  char *buffer;
-  ptrdiff_t len;
-  struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
-  USE_SAFE_ALLOCA;
-
-  fmt = msg = Qnil;
-  GCPRO4 (fmt, msg, arg1, arg2);
+  va_list ap;
+  va_start (ap, format);
+  vadd_to_log (format, ap);
+  va_end (ap);
+}
 
-  fmt = build_string (format);
-  msg = CALLN (Fformat, fmt, arg1, arg2);
+void
+vadd_to_log (char const *format, va_list ap)
+{
+  ptrdiff_t nargs = 1 + format_nargs (format);
+  Lisp_Object args[10];
+  eassert (nargs <= ARRAYELTS (args));
+  args[0] = build_string (format);
+  for (ptrdiff_t i = 1; i <= nargs; i++)
+    args[i] = va_arg (ap, Lisp_Object);
+  Lisp_Object msg = Qnil;
+  struct gcpro gcpro1, gcpro2;
+  GCPRO2 (args, msg);
+  gcpro1.nvars = nargs;
+  msg = Fformat (nargs, args);
 
-  len = SBYTES (msg) + 1;
-  buffer = SAFE_ALLOCA (len);
+  ptrdiff_t len = SBYTES (msg) + 1;
+  USE_SAFE_ALLOCA;
+  char *buffer = SAFE_ALLOCA (len);
   memcpy (buffer, SDATA (msg), len);
 
   message_dolog (buffer, len - 1, true, false);
diff --git a/src/xfaces.c b/src/xfaces.c
index f0b6d39..ce300e7 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -797,7 +797,7 @@ load_pixmap (struct frame *f, Lisp_Object name)
 
   if (bitmap_id < 0)
     {
-      add_to_log ("Invalid or undefined bitmap `%s'", name, Qnil);
+      add_to_log ("Invalid or undefined bitmap `%s'", name);
       bitmap_id = 0;
     }
   else
@@ -1099,7 +1099,7 @@ load_color2 (struct frame *f, struct face *face, 
Lisp_Object name,
      to the values in an existing cell. */
   if (!defined_color (f, SSDATA (name), color, true))
     {
-      add_to_log ("Unable to load color \"%s\"", name, Qnil);
+      add_to_log ("Unable to load color \"%s\"", name);
 
       switch (target_index)
        {
@@ -2247,7 +2247,7 @@ merge_face_ref (struct frame *f, Lisp_Object face_ref, 
Lisp_Object *to,
          else
            {
              if (err_msgs)
-               add_to_log ("Invalid face color", color_name, Qnil);
+               add_to_log ("Invalid face color %S", color_name);
              ok = false;
            }
        }
@@ -2452,7 +2452,7 @@ merge_face_ref (struct frame *f, Lisp_Object face_ref, 
Lisp_Object *to,
       /* FACE_REF ought to be a face name.  */
       ok = merge_named_face (f, face_ref, to, named_merge_points);
       if (!ok && err_msgs)
-       add_to_log ("Invalid face reference: %s", face_ref, Qnil);
+       add_to_log ("Invalid face reference: %s", face_ref);
     }
 
   return ok;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]