emacs-devel
[Top][All Lists]
Advanced

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

Re: Building trunk fails in x_check_image_size


From: Paul Eggert
Subject: Re: Building trunk fails in x_check_image_size
Date: Thu, 28 Jul 2011 02:44:33 -0700
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11

On 07/28/11 01:09, martin rudalics wrote:
> But the consequences of doing that seem too unpredictable to me.
> I'll wait till Paul fixes it.

Sorry about that.  I fixed it for now as follows.  Doing it "right" requires 
more
expertise in Windows and NS than I have right now, but at least
this fix should let things compile, and the code will be no worse
off than before (when it didn't check image sizes on any platform).

* image.c (x_check_image_size) [!HAVE_X_WINDOWS]: Return 1.
In other words, assume that every image size is allowed, on non-X
hosts.  This assumption is probably wrong, but it lets Emacs compile.
=== modified file 'src/image.c'
--- src/image.c 2011-07-14 06:20:53 +0000
+++ src/image.c 2011-07-28 09:35:15 +0000
@@ -1906,16 +1906,17 @@
 static void x_destroy_x_image (XImagePtr);
 static void x_put_x_image (struct frame *, XImagePtr, Pixmap, int, int);

-/* Return nonzero if XIMG's size WIDTH x HEIGHT doesn't break X.
+/* Return nonzero if XIMG's size WIDTH x HEIGHT doesn't break the
+   windowing system.
    WIDTH and HEIGHT must both be positive.
    If XIMG is null, assume it is a bitmap.  */
 static int
 x_check_image_size (XImagePtr ximg, int width, int height)
 {
+#ifdef HAVE_X_WINDOWS
   /* Respect Xlib's limits: it cannot deal with images that have more
      than INT_MAX (and/or UINT_MAX) bytes.  And respect Emacs's limits
-     of PTRDIFF_MAX (and/or SIZE_MAX) bytes for any object.  For now,
-     assume all windowing systems have the same limits that X does.  */
+     of PTRDIFF_MAX (and/or SIZE_MAX) bytes for any object.  */
   enum
   {
     XLIB_BYTES_MAX = min (INT_MAX, UINT_MAX),
@@ -1937,6 +1938,11 @@
     }
   return (width <= (INT_MAX - (bitmap_pad - 1)) / depth
          && height <= X_IMAGE_BYTES_MAX / bytes_per_line);
+#else
+  /* FIXME: Implement this check for the HAVE_NS and HAVE_NTGUI cases.
+     For now, assume that every image size is allowed on these systems.  */
+  return 1;
+#endif
 }

 /* Create an XImage and a pixmap of size WIDTH x HEIGHT for use on




reply via email to

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