pixman: Branch 'region32' - 2 commits

Søren Sandmann Pedersen sandmann at kemper.freedesktop.org
Sun Jun 8 22:04:31 PDT 2008


 pixman/pixman-region.c |   24 ++++++++++++------------
 test/Makefile.am       |    2 ++
 test/region-test.c     |   23 +++++++++++++++++++++++
 3 files changed, 37 insertions(+), 12 deletions(-)

New commits:
commit a76826f19893a0575c0e16079fc1ec6d33171594
Author: Søren Sandmann <sandmann at redhat.com>
Date:   Mon Jun 9 01:03:15 2008 -0400

    Fix uses of short variables in pixman-region.c

diff --git a/pixman/pixman-region.c b/pixman/pixman-region.c
index c37ec52..6676b00 100644
--- a/pixman/pixman-region.c
+++ b/pixman/pixman-region.c
@@ -614,8 +614,8 @@ typedef pixman_bool_t (*OverlapProcPtr)(
     box_type_t *r1End,
     box_type_t *r2,
     box_type_t *r2End,
-    short    	 y1,
-    short    	 y2,
+    int    	 y1,
+    int    	 y2,
     int		 *pOverlap);
 
 static pixman_bool_t
@@ -635,8 +635,8 @@ pixman_op(
     box_type_t * r2;			    /* Pointer into 2d region	     */
     box_type_t *	    r1End;		    /* End of 1st region	     */
     box_type_t *	    r2End;		    /* End of 2d region		     */
-    short	    ybot;		    /* Bottom of intersection	     */
-    short	    ytop;		    /* Top of intersection	     */
+    int	    ybot;		    /* Bottom of intersection	     */
+    int	    ytop;		    /* Top of intersection	     */
     region_data_type_t *	    oldData;		    /* Old data for newReg	     */
     int		    prevBand;		    /* Index of start of
 					     * previous band in newReg       */
@@ -644,8 +644,8 @@ pixman_op(
 					     * band in newReg		     */
     box_type_t * r1BandEnd;		    /* End of current band in r1     */
     box_type_t * r2BandEnd;		    /* End of current band in r2     */
-    short	    top;		    /* Top of non-overlapping band   */
-    short	    bot;		    /* Bottom of non-overlapping band*/
+    int	    top;		    /* Top of non-overlapping band   */
+    int	    bot;		    /* Bottom of non-overlapping band*/
     int    r1y1;		    /* Temps for r1->y1 and r2->y1   */
     int    r2y1;
     int		    newSize;
@@ -921,8 +921,8 @@ pixman_region_intersectO (region_type_t *region,
 			  box_type_t    *r1End,
 			  box_type_t    *r2,
 			  box_type_t    *r2End,
-			  short    	     y1,
-			  short    	     y2,
+			  int    	     y1,
+			  int    	     y2,
 			  int		    *pOverlap)
 {
     int  	x1;
@@ -1062,8 +1062,8 @@ pixman_region_unionO (
     box_type_t *r1End,
     box_type_t *r2,
     box_type_t *r2End,
-    short	  y1,
-    short	  y2,
+    int	  y1,
+    int	  y2,
     int		  *pOverlap)
 {
     box_type_t *     pNextRect;
@@ -1649,8 +1649,8 @@ pixman_region_subtractO (
     box_type_t *  	  	r1End,
     box_type_t *	r2,
     box_type_t *  	  	r2End,
-    short  	y1,
-             short  	y2,
+    int  	y1,
+    int  	y2,
     int		*pOverlap)
 {
     box_type_t *	pNextRect;
diff --git a/test/region-test.c b/test/region-test.c
index 15c204b..e214e9b 100644
--- a/test/region-test.c
+++ b/test/region-test.c
@@ -3,7 +3,8 @@
 #include <stdio.h>
 #include "pixman.h"
 
-/* This seems to go into an infinite loop
+/* This used to go into an infinite loop before pixman-region.c
+ * was fixed to not use explict "short" variables
  */
 int
 main ()
commit 85bad33380b7b78bdd6a7238c1439bcc42e28231
Author: Søren Sandmann <sandmann at redhat.com>
Date:   Mon Jun 9 00:51:28 2008 -0400

    Add infinite loop test

diff --git a/test/Makefile.am b/test/Makefile.am
index d0a21c4..ced0579 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -2,6 +2,7 @@ if HAVE_GTK
 TESTPROGRAMS = \
 	composite-test		\
 	gradient-test		\
+	region-test		\
 	fetch-test
 
 noinst_PROGRAMS = $(TESTPROGRAMS)
@@ -11,5 +12,6 @@ INCLUDES = -I$(top_srcdir)/pixman -I$(top_builddir)/pixman $(GTK_CFLAGS)
 composite_test_LDADD =	$(top_builddir)/pixman/libpixman-1.la $(GTK_LIBS)
 gradient_test_LDADD = $(top_builddir)/pixman/libpixman-1.la $(GTK_LIBS)
 fetch_test_LDADD = $(top_builddir)/pixman/libpixman-1.la
+region_test_LDADD = $(top_builddir)/pixman/libpixman-1.la
 
 endif
diff --git a/test/region-test.c b/test/region-test.c
new file mode 100644
index 0000000..15c204b
--- /dev/null
+++ b/test/region-test.c
@@ -0,0 +1,22 @@
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "pixman.h"
+
+/* This seems to go into an infinite loop
+ */
+int
+main ()
+{
+    pixman_region32_t r1;
+    pixman_region32_t r2;
+    pixman_region32_t r3;
+
+    pixman_region32_init_rect (&r1, 0, 0, 20, 64000);
+    pixman_region32_init_rect (&r2, 0, 0, 20, 64000);
+    pixman_region32_init_rect (&r3, 0, 0, 20, 64000);
+
+    pixman_region32_subtract (&r1, &r2, &r3);
+
+}
+


More information about the xorg-commit mailing list