[23511] trunk/dports/x11/XFree86
source_changes at macosforge.org
source_changes at macosforge.org
Tue Apr 3 05:50:25 PDT 2007
Revision: 23511
http://trac.macosforge.org/projects/macports/changeset/23511
Author: yves at macports.org
Date: 2007-04-03 05:50:24 -0700 (Tue, 03 Apr 2007)
Log Message:
-----------
XFree86 4.6.0 with joyful enhancements like :
* warn about a pre-existing Apple X11 installation before even fetching the sources.
* include freetype and security patches from fink
Modified Paths:
--------------
trunk/dports/x11/XFree86/Portfile
trunk/dports/x11/XFree86/files/XTerm.ad.diff
Added Paths:
-----------
trunk/dports/x11/XFree86/files/patch-GL_apple-Imakefile
trunk/dports/x11/XFree86/files/patch-GL_apple-dri_driver.h
trunk/dports/x11/XFree86/files/patch-Xserver-darwin-Imakefile
trunk/dports/x11/XFree86/files/patch-Xserver-darwin.c
trunk/dports/x11/XFree86/files/xfree86.fink.patch
Modified: trunk/dports/x11/XFree86/Portfile
===================================================================
--- trunk/dports/x11/XFree86/Portfile 2007-04-03 11:09:46 UTC (rev 23510)
+++ trunk/dports/x11/XFree86/Portfile 2007-04-03 12:50:24 UTC (rev 23511)
@@ -2,65 +2,98 @@
PortSystem 1.0
name XFree86
-version 4.5.0
+version 4.6.0
categories x11
-revision 2
maintainers nomaintainer at macports.org
+homepage http://www.xfree86.org/
+
description X11R6 windowing system
-homepage http://www.xfree86.org/
-long_description The XFree86 project's X window system implementation
+long_description \
+ The XFree86 project's X window system implementation
-platforms darwin freebsd
-prefix ${x11prefix}
-master_sites opendarwin xfree:${version}/source/
+platforms darwin freebsd
+master_sites xfree:${version}/source/
-distfiles XFree86-${version}-src-1.tgz \
- XFree86-${version}-src-2.tgz \
- XFree86-${version}-src-3.tgz \
- XFree86-${version}-src-4.tgz \
- XFree86-${version}-src-5.tgz
-checksums XFree86-${version}-src-1.tgz md5 6c0fcf8069c13d068276016bbf6ad712 \
- XFree86-${version}-src-2.tgz md5 cc296c71cbe58edc3ffdec1084e58f4c \
- XFree86-${version}-src-3.tgz md5 c0ad630bfec4545857c2877b3e2dcbeb \
- XFree86-${version}-src-4.tgz md5 217bb03a07cf94561b35815ce257c159 \
- XFree86-${version}-src-5.tgz md5 598ce329eb06b8189f92704a5698253c
+distfiles \
+ ${distname}-src-1.tgz \
+ ${distname}-src-2.tgz \
+ ${distname}-src-3.tgz \
+ ${distname}-src-4.tgz \
+ ${distname}-src-5.tgz
+checksums \
+ ${distname}-src-1.tgz md5 6c05f3486f088d01584f4517540e8d18 \
+ ${distname}-src-2.tgz md5 f084d12aa734c9cd83e8d2a3a4eb3e32 \
+ ${distname}-src-3.tgz md5 05450997f1876098d791a4cf9db21af8 \
+ ${distname}-src-4.tgz md5 102ed22d33bd31a5853cb5addb51d7c9 \
+ ${distname}-src-5.tgz md5 f66708c7ff882e4ca232896266fbf92f
-patchfiles GL_apple.diff applewmExt.h.diff darwinKeyboard.c.diff \
- detect.mk.diff darwin.cf.diff xterm_Imakefile.diff \
- XTerm.ad.diff
+patchfiles \
+ darwin.cf.diff darwinKeyboard.c.diff detect.mk.diff \
+ patch-GL_apple-Imakefile patch-GL_apple-dri_driver.h \
+ patch-Xserver-darwin.c patch-Xserver-darwin-Imakefile \
+ xterm_Imakefile.diff XTerm.ad.diff xfree86.fink.patch
-depends_build bin:perl:perl5.8
-configure {}
-worksrcdir xc
-build.target World
-destroot.target install install.man
+depends_build bin:perl:perl5.8
+use_configure no
-variant darwin {
- configure {
- set hostfd [open "${worksrcpath}/config/cf/host.def" a+]
- puts $hostfd "#define ProjectRoot ${prefix}"
- puts $hostfd "#define NothingOutsideProjectRoot YES"
- puts $hostfd "#define EtcX11Directory \"${prefix}/etc/X11\""
- puts $hostfd "#define StandardIncludes \"-I${workpath}/include\""
- puts $hostfd "#define FontconfigFontsConfDir \"${prefix}/etc/fonts\""
-# puts $hostfd "#define BuildFontServer NO"
-# puts $hostfd "#define BuildFonts NO"
- close $hostfd
- }
+prefix ${x11prefix}
+worksrcdir xc
- post-patch {
- file mkdir "${workpath}/include"
- file link -symbolic "${workpath}/include/security" "/usr/include/pam"
- }
+build.target World
+destroot.target install install.man
+
+pre-fetch {
+ if { [file exists ${prefix}/bin/quartz-wm] } {
+ ui_msg ""
+ ui_warn "
+ You have an Apple X11 installation already.
+ MacPorts will not overwrite it.
+ If you really want to use XFree86 instead,
+ please move it aside first :
+
+ sudo mv /usr/X11R6 /usr/X11R6.apple
+ "
+ exit 1
+ }
}
+platform darwin {
+ configure {
+ set hostfd [open "${worksrcpath}/config/cf/host.def" a+]
+ puts $hostfd "#define ProjectRoot ${prefix}"
+ puts $hostfd "#define NothingOutsideProjectRoot YES"
+ puts $hostfd "#define EtcX11Directory \"${prefix}/etc/X11\""
+ puts $hostfd "#define StandardIncludes \"-I${workpath}/include\""
+ puts $hostfd "#define FontconfigFontsConfDir \"${prefix}/etc/fonts\""
+ close $hostfd
+ }
-variant puredarwin {
- post-configure {
- set hostfd [open "${worksrcpath}/config/cf/host.def" a+]
- puts $hostfd "#define DarwinQuartzSupport NO"
- puts $hostfd "#define BuildGlxExt YES"
- puts $hostfd "#define BuildGLXLibrary YES"
- close $hostfd
- }
+ post-patch {
+ file mkdir "${workpath}/include"
+ file link -symbolic "${workpath}/include/security" "/usr/include/pam"
+ }
}
+
+platform macosx {
+ # Should be fixed in Imakefile
+ pre-destroot {
+ reinplace \
+ "s|\$\(DESTDIR\)\[\[:space:\]\]\[\[:space:\]\]*\$\(|\$\(DESTDIR\)\$\(|g" \
+ ${worksrcpath}/programs/Xserver/Makefile
+ }
+ post-destroot {
+ xinstall -d ${destroot}/Applications/MacPorts
+ cd ${destroot}/Applications/MacPorts
+ system "ln -s ${prefix}/bin/XDarwin.app"
+ }
+}
+
+platform puredarwin {
+ post-configure {
+ set hostfd [open "${worksrcpath}/config/cf/host.def" a+]
+ puts $hostfd "#define DarwinQuartzSupport NO"
+ puts $hostfd "#define BuildGlxExt YES"
+ puts $hostfd "#define BuildGLXLibrary YES"
+ close $hostfd
+ }
+}
Modified: trunk/dports/x11/XFree86/files/XTerm.ad.diff
===================================================================
--- trunk/dports/x11/XFree86/files/XTerm.ad.diff 2007-04-03 11:09:46 UTC (rev 23510)
+++ trunk/dports/x11/XFree86/files/XTerm.ad.diff 2007-04-03 12:50:24 UTC (rev 23511)
@@ -1,8 +1,11 @@
---- programs/xterm/XTerm.ad.orig 2005-05-01 22:22:27.000000000 -0700
-+++ programs/xterm/XTerm.ad 2005-05-01 22:59:23.000000000 -0700
-@@ -116,3 +116,5 @@
- *tek4014*font2: 8x13
+--- programs/xterm/XTerm.ad.orig 2006-04-09 20:34:36.000000000 -0400
++++ programs/xterm/XTerm.ad 2007-03-29 23:05:03.000000000 -0400
+@@ -115,6 +115,8 @@
*tek4014*font3: 6x13
*tek4014*fontSmall: 6x10
+
++*loginShell: true
+
-+*loginShell: true
+ ! If xterm is built with a toolbar, the widget hierarchy looks like this,
+ ! showing widget name / class names. The complete menu hierarchy is built
+ ! at startup because it is needed to make the layout work for the menubar:
Added: trunk/dports/x11/XFree86/files/patch-GL_apple-Imakefile
===================================================================
--- trunk/dports/x11/XFree86/files/patch-GL_apple-Imakefile (rev 0)
+++ trunk/dports/x11/XFree86/files/patch-GL_apple-Imakefile 2007-04-03 12:50:24 UTC (rev 23511)
@@ -0,0 +1,11 @@
+--- lib/GL/apple/Imakefile.orig 2007-03-31 12:50:39.000000000 -0400
++++ lib/GL/apple/Imakefile 2007-03-31 12:51:22.000000000 -0400
+@@ -21,7 +21,7 @@
+
+ DRI_SRCS = dri_glx.c dri_driver.c dri_dispatch.c x-hash.c x-list.c
+ DRI_OBJS = dri_glx.o dri_driver.o dri_dispatch.o x-hash.o x-list.o
+- DRI_INCS = -I$(GLXLIBSRC)/glx -I$(SERVERSRC)/GL/dri -I$(XPINCDIR) \
++ DRI_INCS = $(GLXLIBSRC)/glx -I$(SERVERSRC)/GL/dri -I$(XPINCDIR) \
+ -I$(MESASRCDIR)/include -I$(MESASRCDIR)/src/mesa/glapi \
+ -I$(GLXLIBSRC)/include
+
Added: trunk/dports/x11/XFree86/files/patch-GL_apple-dri_driver.h
===================================================================
--- trunk/dports/x11/XFree86/files/patch-GL_apple-dri_driver.h (rev 0)
+++ trunk/dports/x11/XFree86/files/patch-GL_apple-dri_driver.h 2007-04-03 12:50:24 UTC (rev 23511)
@@ -0,0 +1,11 @@
+--- lib/GL/apple/dri_driver.h.orig 2005-10-14 11:15:55.000000000 -0400
++++ lib/GL/apple/dri_driver.h 2007-03-31 12:52:24.000000000 -0400
+@@ -36,6 +36,8 @@
+ #ifndef _DRI_DRIVER_H_
+ #define _DRI_DRIVER_H_
+
++typedef char GLchar;
++
+ #include "Xplugin.h"
+ #include <X11/Xthreads.h>
+ #include <CoreGraphics/CoreGraphics.h>
Added: trunk/dports/x11/XFree86/files/patch-Xserver-darwin-Imakefile
===================================================================
--- trunk/dports/x11/XFree86/files/patch-Xserver-darwin-Imakefile (rev 0)
+++ trunk/dports/x11/XFree86/files/patch-Xserver-darwin-Imakefile 2007-04-03 12:50:24 UTC (rev 23511)
@@ -0,0 +1,11 @@
+--- programs/Xserver/hw/darwin/Imakefile.orig 2007-03-31 15:20:16.000000000 -0400
++++ programs/Xserver/hw/darwin/Imakefile 2007-03-31 15:20:38.000000000 -0400
+@@ -29,7 +29,7 @@
+ INCLUDES = -I$(SERVERSRC)/mi -I$(SERVERSRC)/fb -I$(SERVERSRC)/render \
+ -I$(SERVERSRC)/include -I$(SERVERSRC)/os \
+ -I$(SERVERSRC)/miext/shadow -I$(SERVERSRC)/hw/xfree86 \
+- -I$(SERVERSRC)/Xi
++ -I$(SERVERSRC)/Xi -I$(SERVERSRC)/dbe -I$(SERVERSRC)/record
+
+ OSNAME = OSName
+ OSVENDOR = OSVendor
Added: trunk/dports/x11/XFree86/files/patch-Xserver-darwin.c
===================================================================
--- trunk/dports/x11/XFree86/files/patch-Xserver-darwin.c (rev 0)
+++ trunk/dports/x11/XFree86/files/patch-Xserver-darwin.c 2007-04-03 12:50:24 UTC (rev 23511)
@@ -0,0 +1,12 @@
+--- programs/Xserver/hw/darwin/darwin.c.orig 2007-03-31 14:53:57.000000000 -0400
++++ programs/Xserver/hw/darwin/darwin.c 2007-03-31 14:54:35.000000000 -0400
+@@ -118,6 +118,9 @@
+ #ifndef PRE_RELEASE
+ #define PRE_RELEASE XF86_VERSION_SNAP
+ #endif
++#ifndef VENDOR_RELEASE
++#define VENDOR_RELEASE 6600
++#endif
+
+ void
+ DarwinPrintBanner()
Added: trunk/dports/x11/XFree86/files/xfree86.fink.patch
===================================================================
--- trunk/dports/x11/XFree86/files/xfree86.fink.patch (rev 0)
+++ trunk/dports/x11/XFree86/files/xfree86.fink.patch 2007-04-03 12:50:24 UTC (rev 23511)
@@ -0,0 +1,724 @@
+--- extras/Xpm/lib/scan.c.orig 2005-03-12 18:15:46.000000000 -0500
++++ extras/Xpm/lib/scan.c 2007-01-09 23:05:26.000000000 -0500
+@@ -638,6 +638,9 @@
+ ibpp = image->bits_per_pixel;
+ offset = image->xoffset;
+
++ if (image->bitmap_unit < 0)
++ return (XpmNoMemory);
++
+ if ((image->bits_per_pixel | image->depth) == 1) {
+ ibu = image->bitmap_unit;
+ for (y = 0; y < height; y++)
+--- extras/freetype2/include/freetype/freetype.h.orig 2004-04-26 11:40:13.000000000 -0400
++++ extras/freetype2/include/freetype/freetype.h 2007-01-09 23:05:26.000000000 -0500
+@@ -17,11 +17,7 @@
+
+
+ #ifndef FT_FREETYPE_H
+-#error "`ft2build.h' hasn't been included yet!"
+-#error "Please always use macros to include FreeType header files."
+-#error "Example:"
+-#error " #include <ft2build.h>"
+-#error " #include FT_FREETYPE_H"
++#include <ft2build.h>
+ #endif
+
+
+--- extras/freetype2/src/base/ftapi.c.orig 2005-02-28 18:19:13.000000000 -0500
++++ extras/freetype2/src/base/ftapi.c 2007-01-09 23:05:27.000000000 -0500
+@@ -161,5 +161,17 @@
+ FT_Stream_ExitFrame( stream );
+ }
+
++ FT_BASE_DEF( FT_Short )
++ FT_Get_Short( FT_Stream stream )
++ {
++ return FT_GET_SHORT();
++ }
++
++
++ FT_BASE_DEF( FT_Long )
++ FT_Get_Long( FT_Stream stream )
++ {
++ return FT_GET_LONG();
++ }
+
+ /* END */
+--- extras/freetype2/src/base/ftmac.c.orig 2004-04-26 12:15:54.000000000 -0400
++++ extras/freetype2/src/base/ftmac.c 2007-01-09 23:05:27.000000000 -0500
+@@ -319,12 +319,12 @@
+ if ( assoc->fontSize == 0 )
+ {
+ *have_sfnt = 1;
+- *sfnt_id = assoc->fontID;
++ *sfnt_id = OSSwapBigToHostInt16(assoc->fontID);
+ }
+ else if ( base_assoc->fontSize == 0 )
+ {
+ *have_sfnt = 1;
+- *sfnt_id = base_assoc->fontID;
++ *sfnt_id = OSSwapBigToHostInt16(base_assoc->fontID);
+ }
+ }
+
+@@ -338,10 +338,10 @@
+ int i;
+
+
+- p += fond->ffStylOff;
++ p += OSSwapBigToHostInt32(fond->ffStylOff);
+ style = (StyleTable*)p;
+ p += sizeof ( StyleTable );
+- string_count = *(unsigned short*)(p);
++ string_count = OSSwapBigToHostInt16(*(unsigned short*)(p));
+ p += sizeof ( short );
+
+ for ( i = 0 ; i < string_count && i < 64; i++ )
+--- extras/freetype2/src/truetype/ttinterp.c.orig 2004-04-26 11:40:59.000000000 -0400
++++ extras/freetype2/src/truetype/ttinterp.c 2007-01-09 23:05:27.000000000 -0500
+@@ -2474,7 +2474,7 @@
+ W = Vx * Vx + Vy * Vy;
+
+ /* Now, we want that Sqrt( W ) = 0x4000 */
+- /* Or 0x1000000 <= W < 0x1004000 */
++ /* Or 0x10000000 <= W < 0x10004000 */
+
+ if ( Vx < 0 )
+ {
+@@ -2492,7 +2492,7 @@
+ else
+ S2 = FALSE;
+
+- while ( W < 0x1000000L )
++ while ( W < 0x10000000L )
+ {
+ /* We need to increase W by a minimal amount */
+ if ( Vx < Vy )
+@@ -2503,7 +2503,7 @@
+ W = Vx * Vx + Vy * Vy;
+ }
+
+- while ( W >= 0x1004000L )
++ while ( W >= 0x10004000L )
+ {
+ /* We need to decrease W by a minimal amount */
+ if ( Vx < Vy )
+--- include/Xarch.h.orig 2003-05-27 18:26:24.000000000 -0400
++++ include/Xarch.h 2007-01-09 23:05:27.000000000 -0500
+@@ -32,8 +32,20 @@
+ * Determine the machine's byte order.
+ */
+
++#if defined (__BIG_ENDIAN__) || defined (__LITTLE_ENDIAN__)
++# undef X_BYTE_ORDER
++# undef X_LITTLE_ENDIAN
++# undef X_BIG_ENDIAN
++# define X_LITTLE_ENDIAN 1234
++# define X_BIG_ENDIAN 4321
++# if __BIG_ENDIAN__
++# define X_BYTE_ORDER X_BIG_ENDIAN
++# else
++# define X_BYTE_ORDER X_LITTLE_ENDIAN
++# endif
++
+ /* See if it is set in the imake config first */
+-#ifdef X_BYTE_ORDER
++#elif defined (X_BYTE_ORDER)
+
+ #define X_BIG_ENDIAN 4321
+ #define X_LITTLE_ENDIAN 1234
+--- lib/X11/imEvToWire.c 2003-04-13 15:22:20.000000000 -0400
++++ lib/X11/imEvToWire.c 2007-01-09 23:05:27.000000000 -0500
+@@ -408,7 +408,7 @@
+ }
+ /* Common process */
+ if (((XAnyEvent *)re)->send_event)
+- event->u.u.type &= 0x80;
++ event->u.u.type |= 0x80;
+ event->u.u.sequenceNumber =
+ ((XAnyEvent *)re)->serial & ~((unsigned long)0xffff);
+ event->u.u.sequenceNumber = sw16(event->u.u.sequenceNumber, sw);
+--- lib/Xcursor/cursor.c.orig 2003-01-25 22:22:42.000000000 -0500
++++ lib/Xcursor/cursor.c 2007-01-09 23:05:27.000000000 -0500
+@@ -712,6 +712,7 @@
+ anim[n].delay = images->images[n]->delay;
+ }
+ cursor = XRenderCreateAnimCursor (dpy, cursors->ncursor, anim);
++ XcursorCursorsDestroy(cursors);
+ free (anim);
+ return cursor;
+ }
+--- lib/Xpm/Imakefile.orig 2004-11-18 16:30:49.000000000 -0500
++++ lib/Xpm/Imakefile 2007-01-09 23:05:27.000000000 -0500
+@@ -99,6 +99,7 @@
+ LinkSourceFile(WrFFrI.c,$(XPMLIBDIR))
+ LinkSourceFile(CrBufFrP.c,$(XPMLIBDIR))
+ LinkSourceFile(CrIFrBuf.c,$(XPMLIBDIR))
++LinkSourceFile(s_popen.c,$(XPMLIBDIR))
+ LinkSourceFile(CrPFrDat.c,$(XPMLIBDIR))
+ LinkSourceFile(RdFToP.c,$(XPMLIBDIR))
+ LinkSourceFile(WrFFrP.c,$(XPMLIBDIR))
+--- lib/font/Type1/afm.c.orig 2004-10-23 11:29:26.000000000 -0400
++++ lib/font/Type1/afm.c 2007-01-09 23:05:27.000000000 -0500
+@@ -22,6 +22,7 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <stdlib.h>
++#include <limits.h>
+ #else
+ #include "Xmd.h" /* For INT32 declaration */
+ #include "Xdefs.h" /* For Bool */
+@@ -111,6 +112,11 @@
+
+ fi->nChars = atoi(p);
+
++ if (fi->nChars < 0 || fi->nChars > INT_MAX / sizeof(Metrics)) {
++ xfree(afmbuf);
++ xfree(fi);
++ return(1);
++ }
+ fi->metrics = (Metrics *)xalloc(fi->nChars *
+ sizeof(Metrics));
+ if (fi->metrics == NULL) {
+--- lib/font/Type1/scanfont.c.orig 2003-11-28 23:55:28.000000000 -0500
++++ lib/font/Type1/scanfont.c 2007-01-09 23:05:27.000000000 -0500
+@@ -49,6 +49,7 @@
+
+ #ifndef FONTMODULE
+ #include <string.h>
++#include <limits.h>
+ #else
+ #include "Xdefs.h" /* Bool declaration */
+ #include "Xmd.h" /* INT32 declaration */
+@@ -843,6 +844,8 @@
+ return(SCAN_OK);
+ }
+
++ if (N > INT_MAX / sizeof(psobj))
++ return (SCAN_ERROR);
+ arrayP = (psobj *)vm_alloc(N*sizeof(psobj));
+ if (!(arrayP) ) return(SCAN_OUT_OF_MEMORY);
+ FontP->Subrs.len = N;
+@@ -903,7 +906,7 @@
+ }
+ else return(rc); /* if next token was not an Int */
+ }
+- if (N<=0) return(SCAN_ERROR);
++ if (N<=0 || N > INT_MAX / sizeof(psdict)) return(SCAN_ERROR);
+ /* save number of entries in the dictionary */
+
+ dictP = (psdict *)vm_alloc((N+1)*sizeof(psdict));
+@@ -1711,6 +1714,11 @@
+ if (tokenType == TOKEN_INTEGER)
+ rangecnt = tokenValue.integer;
+
++ if (rangecnt < 0 || rangecnt > INT_MAX / sizeof(spacerangecode)) {
++ rc = SCAN_ERROR;
++ break;
++ }
++
+ /* ==> tokenLength, tokenTooLong, tokenType, and */
+ /* tokenValue are now set */
+
+--- lib/font/Type1/util.c.orig 2001-01-17 14:43:24.000000000 -0500
++++ lib/font/Type1/util.c 2007-01-09 23:05:27.000000000 -0500
+@@ -97,7 +97,7 @@
+ bytes = (bytes + 7) & ~7;
+
+ /* Allocate the space, if it is available */
+- if (bytes <= vm_free) {
++ if (bytes > 0 && bytes <= vm_free) {
+ answer = vm_next;
+ vm_free -= bytes;
+ vm_next += bytes;
+--- lib/font/bitmap/pcfread.c.orig 2003-11-17 20:17:04.000000000 -0500
++++ lib/font/bitmap/pcfread.c 2007-01-09 23:05:27.000000000 -0500
+@@ -32,6 +32,8 @@
+ * Author: Keith Packard, MIT X Consortium
+ */
+
++#include <stdint.h>
++
+ #include "fntfilst.h"
+ #include "bitmap.h"
+ #include "pcf.h"
+@@ -129,6 +131,10 @@
+ return (PCFTablePtr) NULL;
+ count = pcfGetLSB32(file);
+ if (IS_EOF(file)) return (PCFTablePtr) NULL;
++ if (count < 0 || count > INT32_MAX / sizeof(PCFTableRec)) {
++ pcfError("pcfReadTOC(): invalid file format\n");
++ return NULL;
++ }
+ tables = (PCFTablePtr) xalloc(count * sizeof(PCFTableRec));
+ if (!tables) {
+ pcfError("pcfReadTOC(): Couldn't allocate tables (%d*%d)\n", count, sizeof(PCFTableRec));
+@@ -248,6 +254,10 @@
+ if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT))
+ goto Bail;
+ nprops = pcfGetINT32(file, format);
++ if (nprops <= 0 || nprops > INT32_MAX / sizeof(FontPropRec)) {
++ pcfError("pcfGetProperties(): invalid nprops value (%d)\n", nprops);
++ goto Bail;
++ }
+ if (IS_EOF(file)) goto Bail;
+ props = (FontPropPtr) xalloc(nprops * sizeof(FontPropRec));
+ if (!props) {
+@@ -263,6 +273,13 @@
+ props[i].name = pcfGetINT32(file, format);
+ isStringProp[i] = pcfGetINT8(file, format);
+ props[i].value = pcfGetINT32(file, format);
++ if (props[i].name < 0
++ || (isStringProp[i] != 0 && isStringProp[i] != 1)
++ || (isStringProp[i] && props[i].value < 0)) {
++ pcfError("pcfGetProperties(): invalid file format %d %d %d\n",
++ props[i].name, isStringProp[i], props[i].value);
++ goto Bail;
++ }
+ if (IS_EOF(file)) goto Bail;
+ }
+ /* pad the property array */
+@@ -278,6 +295,7 @@
+ }
+ if (IS_EOF(file)) goto Bail;
+ string_size = pcfGetINT32(file, format);
++ if (string_size < 0) goto Bail;
+ if (IS_EOF(file)) goto Bail;
+ strings = (char *) xalloc(string_size);
+ if (!strings) {
+@@ -418,6 +436,10 @@
+ else
+ nmetrics = pcfGetINT16(file, format);
+ if (IS_EOF(file)) goto Bail;
++ if (nmetrics < 0 || nmetrics > INT32_MAX / sizeof(CharInfoRec)) {
++ pcfError("pcfReadFont(): invalid file format\n");
++ goto Bail;
++ }
+ metrics = (CharInfoPtr) xalloc(nmetrics * sizeof(CharInfoRec));
+ if (!metrics) {
+ pcfError("pcfReadFont(): Couldn't allocate metrics (%d*%d)\n", nmetrics, sizeof(CharInfoRec));
+@@ -443,7 +465,7 @@
+ nbitmaps = pcfGetINT32(file, format);
+ if (nbitmaps != nmetrics || IS_EOF(file))
+ goto Bail;
+-
++ /* nmetrics is alreadt ok, so nbitmap also is */
+ offsets = (CARD32 *) xalloc(nbitmaps * sizeof(CARD32));
+ if (!offsets) {
+ pcfError("pcfReadFont(): Couldn't allocate offsets (%d*%d)\n", nbitmaps, sizeof(CARD32));
+@@ -457,6 +479,7 @@
+ for (i = 0; i < GLYPHPADOPTIONS; i++) {
+ bitmapSizes[i] = pcfGetINT32(file, format);
+ if (IS_EOF(file)) goto Bail;
++ if (bitmapSizes[i] < 0) goto Bail;
+ }
+
+ sizebitmaps = bitmapSizes[PCF_GLYPH_PAD_INDEX(format)];
+@@ -532,6 +555,7 @@
+ if (IS_EOF(file)) goto Bail;
+ if (nink_metrics != nmetrics)
+ goto Bail;
++ /* nmetrics already checked */
+ ink_metrics = (xCharInfo *) xalloc(nink_metrics * sizeof(xCharInfo));
+ if (!ink_metrics) {
+ pcfError("pcfReadFont(): Couldn't allocate ink_metrics (%d*%d)\n", nink_metrics, sizeof(xCharInfo));
+@@ -805,6 +829,10 @@
+ else
+ nmetrics = pcfGetINT16(file, format);
+ if (IS_EOF(file)) goto Bail;
++ if (nmetrics < 0 || nmetrics > INT32_MAX / sizeof(CharInfoRec)) {
++ pcfError("pmfReadFont(): invalid file format\n");
++ goto Bail;
++ }
+ metrics = (CharInfoPtr) xalloc(nmetrics * sizeof(CharInfoRec));
+ if (!metrics) {
+ pcfError("pmfReadFont(): Couldn't allocate metrics (%d*%d)\n", nmetrics, sizeof(CharInfoRec));
+--- programs/Xserver/dbe/dbe.c.orig 2001-10-27 23:33:04.000000000 -0400
++++ programs/Xserver/dbe/dbe.c 2007-01-09 23:05:56.000000000 -0500
+@@ -50,6 +50,10 @@
+ #include "xf86_ansic.h"
+ #endif
+
++#if !defined(UINT32_MAX)
++#define UINT32_MAX 0xffffffffU
++#endif
++
+ /* GLOBALS */
+
+ /* Per-screen initialization functions [init'ed by DbeRegisterFunction()] */
+@@ -728,11 +732,14 @@
+ return(Success);
+ }
+
++ if (nStuff > UINT32_MAX / sizeof(DbeSwapInfoRec))
++ return BadAlloc;
++
+ /* Get to the swap info appended to the end of the request. */
+ dbeSwapInfo = (xDbeSwapInfo *)&stuff[1];
+
+ /* Allocate array to record swap information. */
+- swapInfo = (DbeSwapInfoPtr)ALLOCATE_LOCAL(nStuff * sizeof(DbeSwapInfoRec));
++ swapInfo = (DbeSwapInfoPtr)Xalloc(nStuff * sizeof(DbeSwapInfoRec));
+ if (swapInfo == NULL)
+ {
+ return(BadAlloc);
+@@ -747,14 +754,14 @@
+ if (!(pWin = SecurityLookupWindow(dbeSwapInfo[i].window, client,
+ SecurityWriteAccess)))
+ {
+- DEALLOCATE_LOCAL(swapInfo);
++ Xfree(swapInfo);
+ return(BadWindow);
+ }
+
+ /* Each window must be double-buffered - BadMatch. */
+ if (DBE_WINDOW_PRIV(pWin) == NULL)
+ {
+- DEALLOCATE_LOCAL(swapInfo);
++ Xfree(swapInfo);
+ return(BadMatch);
+ }
+
+@@ -763,7 +770,7 @@
+ {
+ if (dbeSwapInfo[i].window == dbeSwapInfo[j].window)
+ {
+- DEALLOCATE_LOCAL(swapInfo);
++ Xfree(swapInfo);
+ return(BadMatch);
+ }
+ }
+@@ -774,7 +781,7 @@
+ (dbeSwapInfo[i].swapAction != XdbeUntouched ) &&
+ (dbeSwapInfo[i].swapAction != XdbeCopied ))
+ {
+- DEALLOCATE_LOCAL(swapInfo);
++ Xfree(swapInfo);
+ return(BadValue);
+ }
+
+@@ -804,12 +811,12 @@
+ error = (*pDbeScreenPriv->SwapBuffers)(client, &nStuff, swapInfo);
+ if (error != Success)
+ {
+- DEALLOCATE_LOCAL(swapInfo);
++ Xfree(swapInfo);
+ return(error);
+ }
+ }
+
+- DEALLOCATE_LOCAL(swapInfo);
++ Xfree(swapInfo);
+ return(Success);
+
+ } /* ProcDbeSwapBuffers() */
+@@ -893,10 +900,12 @@
+
+ REQUEST_AT_LEAST_SIZE(xDbeGetVisualInfoReq);
+
++ if (stuff->n > UINT32_MAX / sizeof(DrawablePtr))
++ return BadAlloc;
+ /* Make sure any specified drawables are valid. */
+ if (stuff->n != 0)
+ {
+- if (!(pDrawables = (DrawablePtr *)ALLOCATE_LOCAL(stuff->n *
++ if (!(pDrawables = (DrawablePtr *)Xalloc(stuff->n *
+ sizeof(DrawablePtr))))
+ {
+ return(BadAlloc);
+@@ -909,7 +918,7 @@
+ if (!(pDrawables[i] = (DrawablePtr)SecurityLookupDrawable(
+ drawables[i], client, SecurityReadAccess)))
+ {
+- DEALLOCATE_LOCAL(pDrawables);
++ Xfree(pDrawables);
+ return(BadDrawable);
+ }
+ }
+@@ -921,7 +930,7 @@
+ {
+ if (pDrawables)
+ {
+- DEALLOCATE_LOCAL(pDrawables);
++ Xfree(pDrawables);
+ }
+
+ return(BadAlloc);
+@@ -948,7 +957,7 @@
+ /* Free pDrawables if we needed to allocate it above. */
+ if (pDrawables)
+ {
+- DEALLOCATE_LOCAL(pDrawables);
++ Xfree(pDrawables);
+ }
+
+ return(BadAlloc);
+@@ -1029,7 +1038,7 @@
+
+ if (pDrawables)
+ {
+- DEALLOCATE_LOCAL(pDrawables);
++ Xfree(pDrawables);
+ }
+
+ return(client->noClientException);
+--- programs/Xserver/fb/fb.h.orig 2004-06-10 13:28:10.000000000 -0400
++++ programs/Xserver/fb/fb.h 2007-01-09 23:05:27.000000000 -0500
+@@ -643,6 +643,10 @@
+ #ifdef __DARWIN__
+ #define __fbPixOriginX(pPix) ((pPix)->drawable.x)
+ #define __fbPixOriginY(pPix) ((pPix)->drawable.y)
++#elif defined (ROOTLESS)
++/* Use X position to account for non-32-bit alignments. */
++#define __fbPixOriginX(pPix) ((pPix)->drawable.x)
++#define __fbPixOriginY(pPix) 0
+ #else
+ #define __fbPixOriginX(pPix) 0
+ #define __fbPixOriginY(pPix) 0
+--- programs/Xserver/fb/fbblt.c.orig 2000-09-27 20:47:22.000000000 -0400
++++ programs/Xserver/fb/fbblt.c 2007-01-09 23:05:27.000000000 -0500
+@@ -25,6 +25,10 @@
+
+ #include "fb.h"
+
++#ifdef FB_XP
++#include "Xplugin.h"
++#endif
++
+ #define InitializeShifts(sx,dx,ls,rs) { \
+ if (sx != dx) { \
+ if (sx > dx) { \
+@@ -84,6 +88,58 @@
+ }
+ FbMaskBitsBytes (dstX, width, destInvarient, startmask, startbyte,
+ nmiddle, endmask, endbyte);
++
++#ifdef FB_XP
++ if (!startmask && !endmask && alu == GXcopy
++ && height * nmiddle * sizeof (*dst) > xp_copy_bytes_threshold)
++ {
++ if (pm == FB_ALLONES)
++ {
++ xp_copy_bytes (nmiddle * sizeof (*dst), height,
++ (char *) srcLine + (srcX >> 3),
++ srcStride * sizeof (*src),
++ (char *) dstLine + (dstX >> 3),
++ dstStride * sizeof (*dst));
++ return;
++ }
++
++ /* FIXME: the pm test here isn't super-wonderful - just because
++ we don't care about the top eight bits doesn't necessarily
++ mean we want them set to 255. But doing this does give a
++ factor of two performance improvement when copying from a
++ pixmap to a window, which is pretty common.. */
++
++ else if (bpp == 32 && sizeof (FbBits) == 4
++ && pm == 0x00FFFFFFUL && !reverse)
++ {
++ /* need to copy XRGB to ARGB. */
++
++ void *src[2], *dest[2];
++ unsigned int src_rowbytes[2], dest_rowbytes[2];
++ unsigned int fn;
++
++ src[0] = (char *) srcLine + (srcX >> 3);
++ src[1] = NULL;
++ src_rowbytes[0] = srcStride * sizeof (*src);
++ src_rowbytes[1] = 0;
++
++ dest[0] = (char *) dstLine + (dstX >> 3);
++ dest[1] = dest[0];
++ dest_rowbytes[0] = dstStride * sizeof (*dst);
++ dest_rowbytes[1] = dest_rowbytes[0];
++
++ fn = XP_COMPOSITE_FUNCTION (XP_COMPOSITE_SRC, XP_DEPTH_ARGB8888,
++ XP_DEPTH_NIL, XP_DEPTH_ARGB8888);
++
++ if (xp_composite_pixels (nmiddle, height, fn, src, src_rowbytes,
++ NULL, 0, dest, dest_rowbytes) == Success)
++ {
++ return;
++ }
++ }
++ }
++#endif
++
+ if (reverse)
+ {
+ srcLine += ((srcX + width - 1) >> FB_SHIFT) + 1;
+--- programs/Xserver/fb/fbpict.c.orig 2004-06-10 13:28:10.000000000 -0400
++++ programs/Xserver/fb/fbpict.c 2007-01-09 23:05:27.000000000 -0500
+@@ -25,6 +25,10 @@
+
+ #include "fb.h"
+
++#ifdef FB_XP
++#include "Xplugin.h"
++#endif
++
+ #ifdef RENDER
+
+ #include "picturestr.h"
+@@ -172,6 +176,30 @@
+ fbComposeGetStart (pDst, xDst, yDst, CARD32, dstStride, dstLine, 1);
+ fbComposeGetStart (pMask, xMask, yMask, CARD8, maskStride, maskLine, 1);
+
++#ifdef FB_XP
++ if (dstMask == FB_ALLONES && pDst->pDrawable->bitsPerPixel == 32
++ && width * height > xp_composite_area_threshold)
++ {
++ void *srcp[2], *destp[2];
++ unsigned int dest_rowbytes[2];
++ unsigned int fn;
++
++ srcp[0] = &src; srcp[1] = &src;
++ /* null rowbytes pointer means use first value as a constant */
++ destp[0] = dstLine; destp[1] = dstLine;
++ dest_rowbytes[0] = dstStride * 4; dest_rowbytes[1] = dest_rowbytes[0];
++ fn = XP_COMPOSITE_FUNCTION (XP_COMPOSITE_OVER, XP_DEPTH_ARGB8888,
++ XP_DEPTH_A8, XP_DEPTH_ARGB8888);
++
++ if (xp_composite_pixels (width, height, fn, srcp, NULL,
++ maskLine, maskStride,
++ destp, dest_rowbytes) == Success)
++ {
++ return;
++ }
++ }
++#endif
++
+ while (height--)
+ {
+ dst = dstLine;
+--- programs/Xserver/fb/fbsolid.c.orig 2001-10-27 23:33:08.000000000 -0400
++++ programs/Xserver/fb/fbsolid.c 2007-01-09 23:05:27.000000000 -0500
+@@ -26,6 +26,10 @@
+
+ #include "fb.h"
+
++#ifdef FB_XP
++#include "Xplugin.h"
++#endif
++
+ void
+ fbSolid (FbBits *dst,
+ FbStride dstStride,
+@@ -56,6 +60,23 @@
+ nmiddle, endmask, endbyte);
+ if (startmask)
+ dstStride--;
++
++#ifdef FB_XP
++ if (!startmask && !endmask && !and
++ && height * nmiddle * sizeof (*dst) > xp_fill_bytes_threshold)
++ {
++ if (bpp <= 8)
++ xor |= xor << 8;
++ if (bpp <= 16)
++ xor |= xor << 16;
++
++ xp_fill_bytes (nmiddle * sizeof (*dst), height, xor,
++ (char *) dst + (dstX >> 3),
++ dstStride * sizeof (*dst));
++ return;
++ }
++#endif
++
+ dstStride -= nmiddle;
+ while (height--)
+ {
+--- programs/Xserver/hw/vfb/InitOutput.c.orig 2005-01-30 12:48:44.000000000 -0500
++++ programs/Xserver/hw/vfb/InitOutput.c 2007-01-09 23:05:27.000000000 -0500
+@@ -83,6 +83,13 @@
+
+ /* $XFree86: xc/programs/Xserver/hw/vfb/InitOutput.c,v 3.31 2005/01/30 17:48:44 tsi Exp $ */
+
++/* jsh: workaround for 3834723 */
++#ifdef HAS_SHM
++#include <sys/types.h>
++#include <sys/ipc.h>
++#include <sys/shm.h>
++#endif /* HAS_SHM */
++
+ #if defined(WIN32)
+ #include <X11/Xwinsock.h>
+ #endif
+--- programs/Xserver/hw/xnest/Screen.c.orig 2003-11-16 00:05:20.000000000 -0500
++++ programs/Xserver/hw/xnest/Screen.c 2007-01-09 23:05:27.000000000 -0500
+@@ -359,6 +359,11 @@
+ if (!miScreenDevPrivateInit(pScreen, xnestWidth, NULL))
+ return FALSE;
+
++#ifdef SHAPE
++ /* overwrite miSetShape with our own */
++ pScreen->SetShape = xnestSetShape;
++#endif /* SHAPE */
++
+ /* devPrivates */
+
+ #define POSITION_OFFSET (pScreen->myNum * (xnestWidth + xnestHeight) / 32)
+--- programs/Xserver/hw/xnest/Window.c.orig 2003-11-16 00:05:20.000000000 -0500
++++ programs/Xserver/hw/xnest/Window.c 2007-01-09 23:05:27.000000000 -0500
+@@ -449,6 +449,13 @@
+ }
+
+ #ifdef SHAPE
++void
++xnestSetShape(WindowPtr pWin)
++{
++ xnestShapeWindow(pWin);
++ miSetShape(pWin);
++}
++
+ static Bool
+ xnestRegionEqual(RegionPtr pReg1, RegionPtr pReg2)
+ {
+--- programs/Xserver/hw/xnest/XNWindow.h.orig 2003-11-16 00:05:20.000000000 -0500
++++ programs/Xserver/hw/xnest/XNWindow.h 2007-01-09 23:05:27.000000000 -0500
+@@ -73,6 +73,7 @@
+ void xnestWindowExposures(WindowPtr pWin, RegionPtr pRgn,
+ RegionPtr other_exposed);
+ #ifdef SHAPE
++void xnestSetShape(WindowPtr pWin);
+ void xnestShapeWindow(WindowPtr pWin);
+ #endif /* SHAPE */
+
+--- programs/Xserver/include/servermd.h.orig 2004-03-21 06:27:06.000000000 -0500
++++ programs/Xserver/include/servermd.h 2007-01-09 23:05:27.000000000 -0500
+@@ -167,7 +167,7 @@
+
+ #endif /* hpux */
+
+-#if defined(__powerpc__)
++#if defined(__powerpc__) || defined (__ppc__)
+
+ #define IMAGE_BYTE_ORDER MSBFirst
+ #define BITMAP_BIT_ORDER MSBFirst
+--- programs/Xserver/mi/miwindow.c.orig 2003-11-10 13:22:49.000000000 -0500
++++ programs/Xserver/mi/miwindow.c 2007-01-09 23:05:27.000000000 -0500
+@@ -883,7 +883,11 @@
+
+ /* and move those bits */
+
+- if (oldpt.x != x || oldpt.y != y)
++ if (oldpt.x != x || oldpt.y != y
++#ifdef COMPOSITE
++ || pWin->redirectDraw
++#endif
++ )
+ (*pWin->drawable.pScreen->CopyWindow)(pWin, oldpt, gravitate[g]);
+
+ /* remove any overwritten bits from the remaining useful bits */
+--- programs/Xserver/xkb/xkbAccessX.c.orig 2003-11-17 17:20:46.000000000 -0500
++++ programs/Xserver/xkb/xkbAccessX.c 2007-01-09 23:05:27.000000000 -0500
+@@ -320,7 +320,7 @@
+ void
+ AccessXCancelRepeatKey(XkbSrvInfoPtr xkbi,KeyCode key)
+ {
+- if (xkbi->repeatKey==key)
++ if (xkbi && xkbi->repeatKey==key)
+ xkbi->repeatKey= 0;
+ return;
+ }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20070403/4e04b55e/attachment.html
More information about the macports-changes
mailing list