[Top][All Lists]
[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