Группа :: Система/X11
Пакет: xorg-x11
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: xorg-x11-6.8.2-cvs-xcursor-1.1.4.patch
Скачать
Скачать
diff -Naur xorg-x11-6.8.2/xc/lib/Xcursor/autogen.sh xorg-x11-6.8.x.99/xc/lib/Xcursor/autogen.sh
--- xorg-x11-6.8.2/xc/lib/Xcursor/autogen.sh 2004-04-23 22:43:40 +0400
+++ xorg-x11-6.8.x.99/xc/lib/Xcursor/autogen.sh 2005-06-30 15:40:09 +0400
@@ -1,3 +1,12 @@
#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
autoreconf -v --install || exit 1
-./configure --enable-maintainer-mode "$@"
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff -Naur xorg-x11-6.8.2/xc/lib/Xcursor/ChangeLog xorg-x11-6.8.x.99/xc/lib/Xcursor/ChangeLog
--- xorg-x11-6.8.2/xc/lib/Xcursor/ChangeLog 2004-04-23 22:43:40 +0400
+++ xorg-x11-6.8.x.99/xc/lib/Xcursor/ChangeLog 2005-06-30 15:40:09 +0400
@@ -1,4 +1,51 @@
-2004-02-24 Fredrik HЖglund <fredrik@kde.org>
+2005-06-30 Daniel Stone <daniel@freedesktop.org>
+
+ * lib/Xcursor/file.c:
+ * lib/Xcursor/library.c:
+ * lib/Xcursor/xlib.c:
+ Check arguments for validity on almost all functions.
+
+2005-06-17 Branden Robinson <branden@deadbeast.net>
+
+ Merge changes from freedesktop.org xorg CVS trunk.
+
+ * cursor.c:
+ * library.c:
+ Add preprocessor test for HAVE_XFIXES being defined before testing
+ its value. [merged by Egbert Eich; author unknown]
+
+ * COPYING:
+ * ChangeLog:
+ * Xcursor.3:
+ * Xcursor.h:
+ * cursor.c:
+ * display.c:
+ * file.c:
+ * library.c:
+ * xcursorint.h:
+ * xlib.c:
+ Encoding of numerous files changed to UTF-8 [Markus Kuhn]
+
+ * cursor.c:
+ Bug #1043: Fix leak when creating animated cursors. [Daniel Stone]
+
+Tue Feb 8 14:26:32 2005 Owen Taylor <otaylor@redhat.com>
+
+ * configure.ac: Remove AC_CONFIG_AUX_DIR()
+
+2004-04-13 Daniel Stone <daniel@freedesktop.org>
+
+ * ChangeLog:
+ Tag 1.1.3, for xlibs 1.0.1.
+
+2004-04-07 Keith Packard <keithp@keithp.com>
+
+ reviewed by: Michel Dц╓nzer <michel@daenzer.net>
+
+ * configure.ac:
+ Make sure X_CFLAGS/X_LIBS are substituted in the xcursor.pc file
+
+2004-02-24 Fredrik Hц╤glund <fredrik@kde.org>
* configure.ac:
* xcursorint.h:
diff -Naur xorg-x11-6.8.2/xc/lib/Xcursor/configure.ac xorg-x11-6.8.x.99/xc/lib/Xcursor/configure.ac
--- xorg-x11-6.8.2/xc/lib/Xcursor/configure.ac 2004-04-23 22:43:40 +0400
+++ xorg-x11-6.8.x.99/xc/lib/Xcursor/configure.ac 2005-06-30 15:40:09 +0400
@@ -30,12 +30,11 @@
dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's
dnl not possible to extract the version number here from Xcursor.h
dnl
-AC_INIT([libXcursor],1.1.2,[keithp@keithp.com],[libXcursor])
+AC_INIT([libXcursor],1.1.4,[keithp@keithp.com],[libXcursor])
AM_INIT_AUTOMAKE([dist-bzip2])
AC_CONFIG_SRCDIR([Makefile.am])
AM_MAINTAINER_MODE
AM_CONFIG_HEADER(config.h)
-AC_CONFIG_AUX_DIR(.)
dnl libtool versioning
@@ -102,6 +101,9 @@
fi
fi
+AC_SUBST(X_CFLAGS)
+AC_SUBST(X_LIBS)
+
PKG_CHECK_MODULES(XRENDER, xrender >= 0.8.2, [xrender_found_with_pkgconfig=yes],
[xrender_found_with_pkgconfig=no])
case "$xrender_found_with_pkgconfig" in
diff -Naur xorg-x11-6.8.2/xc/lib/Xcursor/cursor.c xorg-x11-6.8.x.99/xc/lib/Xcursor/cursor.c
--- xorg-x11-6.8.2/xc/lib/Xcursor/cursor.c 2004-04-23 22:43:40 +0400
+++ xorg-x11-6.8.x.99/xc/lib/Xcursor/cursor.c 2005-06-30 15:40:09 +0400
@@ -711,6 +712,7 @@
anim[n].delay = images->images[n]->delay;
}
cursor = XRenderCreateAnimCursor (dpy, cursors->ncursor, anim);
+ XcursorCursorsDestroy(cursors);
free (anim);
}
#if defined HAVE_XFIXES && XFIXES_MAJOR >= 2
diff -Naur xorg-x11-6.8.2/xc/lib/Xcursor/file.c xorg-x11-6.8.x.99/xc/lib/Xcursor/file.c
--- xorg-x11-6.8.2/xc/lib/Xcursor/file.c 2004-04-23 22:43:40 +0400
+++ xorg-x11-6.8.x.99/xc/lib/Xcursor/file.c 2005-06-30 15:40:09 +0400
@@ -46,7 +47,8 @@
void
XcursorImageDestroy (XcursorImage *image)
{
- free (image);
+ if (image)
+ free (image);
}
XcursorImages *
@@ -69,6 +71,9 @@
{
int n;
+ if (!images)
+ return;
+
for (n = 0; n < images->nimage; n++)
XcursorImageDestroy (images->images[n]);
if (images->name)
@@ -79,10 +84,16 @@
void
XcursorImagesSetName (XcursorImages *images, const char *name)
{
- char *new = malloc (strlen (name) + 1);
+ char *new;
+
+ if (!images || !name)
+ return;
+
+ new = malloc (strlen (name) + 1);
if (!new)
return;
+
strcpy (new, name);
if (images->name)
free (images->name);
@@ -110,7 +121,8 @@
void
XcursorCommentDestroy (XcursorComment *comment)
{
- free (comment);
+ if (!comment)
+ free (comment);
}
XcursorComments *
@@ -132,6 +144,9 @@
{
int n;
+ if (!comments)
+ return;
+
for (n = 0; n < comments->ncomment; n++)
XcursorCommentDestroy (comments->comments[n]);
free (comments);
@@ -142,6 +157,9 @@
{
unsigned char bytes[4];
+ if (!file || !u)
+ return XcursorFalse;
+
if ((*file->read) (file, bytes, 4) != 4)
return XcursorFalse;
*u = ((bytes[0] << 0) |
@@ -154,7 +172,7 @@
static XcursorBool
_XcursorReadBytes (XcursorFile *file, char *bytes, int length)
{
- if ((*file->read) (file, (unsigned char *) bytes, length) != length)
+ if (!file || !bytes || (*file->read) (file, (unsigned char *) bytes, length) != length)
return XcursorFalse;
return XcursorTrue;
}
@@ -164,6 +182,9 @@
{
unsigned char bytes[4];
+ if (!file)
+ return XcursorFalse;
+
bytes[0] = u;
bytes[1] = u >> 8;
bytes[2] = u >> 16;
@@ -176,7 +197,7 @@
static XcursorBool
_XcursorWriteBytes (XcursorFile *file, char *bytes, int length)
{
- if ((*file->write) (file, (unsigned char *) bytes, length) != length)
+ if (!file || !bytes || (*file->write) (file, (unsigned char *) bytes, length) != length)
return XcursorFalse;
return XcursorTrue;
}
@@ -184,7 +205,8 @@
static void
_XcursorFileHeaderDestroy (XcursorFileHeader *fileHeader)
{
- free (fileHeader);
+ if (!fileHeader)
+ free (fileHeader);
}
static XcursorFileHeader *
@@ -212,6 +234,9 @@
XcursorFileHeader head, *fileHeader;
XcursorUInt skip;
int n;
+
+ if (!file)
+ return NULL;
if (!_XcursorReadUInt (file, &head.magic))
return 0;
@@ -262,6 +287,9 @@
_XcursorWriteFileHeader (XcursorFile *file, XcursorFileHeader *fileHeader)
{
int toc;
+
+ if (!file || !fileHeader)
+ return XcursorFalse;
if (!_XcursorWriteUInt (file, fileHeader->magic))
return XcursorFalse;
@@ -288,7 +316,8 @@
XcursorFileHeader *fileHeader,
int toc)
{
- if ((*file->seek) (file, fileHeader->tocs[toc].position, SEEK_SET) == EOF)
+ if (!file || !fileHeader || \
+ (*file->seek) (file, fileHeader->tocs[toc].position, SEEK_SET) == EOF)
return XcursorFalse;
return XcursorTrue;
}
@@ -299,6 +328,8 @@
int toc,
XcursorChunkHeader *chunkHeader)
{
+ if (!file || !fileHeader || !chunkHeader)
+ return XcursorFalse;
if (!_XcursorSeekToToc (file, fileHeader, toc))
return XcursorFalse;
if (!_XcursorReadUInt (file, &chunkHeader->header))
@@ -322,6 +353,8 @@
int toc,
XcursorChunkHeader *chunkHeader)
{
+ if (!file || !fileHeader || !chunkHeader)
+ return XcursorFalse;
if (!_XcursorSeekToToc (file, fileHeader, toc))
return XcursorFalse;
if (!_XcursorWriteUInt (file, chunkHeader->header))
@@ -347,6 +380,9 @@
XcursorDim bestSize = 0;
XcursorDim thisSize;
+ if (!fileHeader || !nsizesp)
+ return 0;
+
for (n = 0; n < fileHeader->ntoc; n++)
{
if (fileHeader->tocs[n].type != XCURSOR_IMAGE_TYPE)
@@ -372,6 +408,9 @@
int toc;
XcursorDim thisSize;
+ if (!fileHeader)
+ return 0;
+
for (toc = 0; toc < fileHeader->ntoc; toc++)
{
if (fileHeader->tocs[toc].type != XCURSOR_IMAGE_TYPE)
@@ -399,6 +438,9 @@
int n;
XcursorPixel *p;
+ if (!file || !fileHeader)
+ return NULL;
+
if (!_XcursorFileReadChunkHeader (file, fileHeader, toc, &chunkHeader))
return 0;
if (!_XcursorReadUInt (file, &head.width))
@@ -444,6 +486,9 @@
static XcursorUInt
_XcursorImageLength (XcursorImage *image)
{
+ if (!image)
+ return 0;
+
return XCURSOR_IMAGE_HEADER_LEN + (image->width * image->height) * 4;
}
@@ -457,6 +502,9 @@
int n;
XcursorPixel *p;
+ if (!file || !fileHeader || !image)
+ return XcursorFalse;
+
/* sanity check data */
if (image->width > XCURSOR_IMAGE_MAX_SIZE ||
image->height > XCURSOR_IMAGE_MAX_SIZE)
@@ -508,6 +556,9 @@
XcursorUInt length;
XcursorComment *comment;
+ if (!file || !fileHeader)
+ return NULL;
+
/* read chunk header */
if (!_XcursorFileReadChunkHeader (file, fileHeader, toc, &chunkHeader))
return 0;
@@ -541,6 +592,9 @@
XcursorChunkHeader chunkHeader;
XcursorUInt length;
+ if (!file || !fileHeader || !comment || !comment->comment)
+ return XcursorFalse;
+
length = strlen (comment->comment);
/* sanity check data */
@@ -600,7 +654,7 @@
int n;
int toc;
- if (size < 0)
+ if (!file || size < 0)
return 0;
fileHeader = _XcursorReadFileHeader (file);
if (!fileHeader)
@@ -641,6 +695,9 @@
int n;
int toc;
+ if (!file)
+ return 0;
+
fileHeader = _XcursorReadFileHeader (file);
if (!fileHeader)
return 0;
@@ -692,6 +749,8 @@
XcursorComments *comments;
int toc;
+ if (!file)
+ return 0;
fileHeader = _XcursorReadFileHeader (file);
if (!fileHeader)
return 0;
@@ -762,6 +821,9 @@
int n;
int toc;
+ if (!file || !comments || !images)
+ return XcursorFalse;
+
fileHeader = _XcursorFileHeaderCreate (comments->ncomment + images->nimage);
if (!fileHeader)
return XcursorFalse;
@@ -861,6 +923,9 @@
{
XcursorFile f;
+ if (!file)
+ return NULL;
+
_XcursorStdioFileInitialize (file, &f);
return XcursorXcFileLoadImage (&f, size);
}
@@ -870,6 +935,9 @@
{
XcursorFile f;
+ if (!file)
+ return NULL;
+
_XcursorStdioFileInitialize (file, &f);
return XcursorXcFileLoadImages (&f, size);
}
@@ -879,6 +947,9 @@
{
XcursorFile f;
+ if (!file)
+ return NULL;
+
_XcursorStdioFileInitialize (file, &f);
return XcursorXcFileLoadAllImages (&f);
}
@@ -890,6 +961,9 @@
{
XcursorFile f;
+ if (!file || !commentsp || !imagesp)
+ return XcursorFalse;
+
_XcursorStdioFileInitialize (file, &f);
return XcursorXcFileLoad (&f, commentsp, imagesp);
}
@@ -900,7 +974,7 @@
XcursorComments *comments = XcursorCommentsCreate (0);
XcursorFile f;
XcursorBool ret;
- if (!comments)
+ if (!comments || !file || !images)
return 0;
_XcursorStdioFileInitialize (file, &f);
ret = XcursorXcFileSave (&f, comments, images) && fflush (file) != EOF;
@@ -914,6 +988,9 @@
const XcursorImages *images)
{
XcursorFile f;
+
+ if (!file || !comments || !images)
+ return XcursorFalse;
_XcursorStdioFileInitialize (file, &f);
return XcursorXcFileSave (&f, comments, images) && fflush (file) != EOF;
@@ -925,6 +1002,9 @@
FILE *f;
XcursorImage *image;
+ if (!file || size < 0)
+ return NULL;
+
f = fopen (file, "r");
if (!f)
return 0;
@@ -939,6 +1019,9 @@
FILE *f;
XcursorImages *images;
+ if (!file || size < 0)
+ return NULL;
+
f = fopen (file, "r");
if (!f)
return 0;
@@ -953,6 +1036,9 @@
FILE *f;
XcursorImages *images;
+ if (!file)
+ return NULL;
+
f = fopen (file, "r");
if (!f)
return 0;
@@ -969,6 +1055,9 @@
FILE *f;
XcursorBool ret;
+ if (!file)
+ return XcursorFalse;
+
f = fopen (file, "r");
if (!f)
return 0;
@@ -983,6 +1072,9 @@
FILE *f;
XcursorBool ret;
+ if (!file || !images)
+ return XcursorFalse;
+
f = fopen (file, "w");
if (!f)
return 0;
@@ -998,10 +1090,12 @@
FILE *f;
XcursorBool ret;
+ if (!file || !comments || !images)
+ return XcursorFalse;
+
f = fopen (file, "w");
if (!f)
return 0;
ret = XcursorFileSave (f, comments, images);
return fclose (f) != EOF && ret;
}
-
diff -Naur xorg-x11-6.8.2/xc/lib/Xcursor/Imakefile xorg-x11-6.8.x.99/xc/lib/Xcursor/Imakefile
--- xorg-x11-6.8.2/xc/lib/Xcursor/Imakefile 2004-04-23 22:43:40 +0400
+++ xorg-x11-6.8.x.99/xc/lib/Xcursor/Imakefile 2005-06-30 15:40:09 +0400
@@ -27,7 +27,7 @@
REQUIREDLIBS = $(LDPRELIB) $(XRENDERLIB)
#endif
-XCURSOR_VERSION=1.1.2
+XCURSOR_VERSION=1.1.4
XRENDER_LIBS=$(XRENDERLIB)
XRENDER_CFLAGS=$(XRENDERINCLUDES)
diff -Naur xorg-x11-6.8.2/xc/lib/Xcursor/library.c xorg-x11-6.8.x.99/xc/lib/Xcursor/library.c
--- xorg-x11-6.8.2/xc/lib/Xcursor/library.c 2004-04-23 22:43:40 +0400
+++ xorg-x11-6.8.x.99/xc/lib/Xcursor/library.c 2005-06-30 15:40:09 +0400
@@ -80,6 +81,9 @@
int themelen;
int len;
+ if (!dir || !theme)
+ return NULL;
+
colon = strchr (dir, ':');
if (!colon)
colon = dir + strlen (dir);
@@ -127,6 +131,9 @@
{
char *full;
+ if (!dir || !subdir || !file)
+ return NULL;
+
full = malloc (strlen (dir) + 1 + strlen (subdir) + 1 + strlen (file) + 1);
if (!full)
return 0;
@@ -157,6 +164,9 @@
char *result = 0;
FILE *f;
+ if (!full)
+ return NULL;
+
f = fopen (full, "r");
if (f)
{
@@ -207,6 +217,9 @@
char *inherits = 0;
const char *i;
+ if (!theme || !name)
+ return NULL;
+
/*
* XCURSOR_CORE_THEME is a magic name; cursors from the core set
* are never found in any directory. Instead, a magic value is
@@ -259,6 +272,9 @@
FILE *f = 0;
XcursorImage *image = 0;
+ if (!file)
+ return NULL;
+
if (theme)
f = XcursorScanTheme (theme, file);
if (!f)
@@ -279,6 +295,9 @@
FILE *f = 0;
XcursorImages *images = 0;
+ if (!file)
+ return NULL;
+
if (theme)
f = XcursorScanTheme (theme, file);
if (!f)
@@ -303,6 +322,9 @@
XcursorImages *images = XcursorLibraryLoadImages (file, theme, size);
Cursor cursor;
+ if (!file)
+ return 0;
+
if (!images)
{
int id = XcursorLibraryShape (file);
@@ -328,6 +350,9 @@
XcursorImages *images = XcursorLibraryLoadImages (file, theme, size);
XcursorCursors *cursors;
+ if (!file)
+ return NULL;
+
if (!images)
{
int id = XcursorLibraryShape (file);
diff -Naur xorg-x11-6.8.2/xc/lib/Xcursor/Xcursor.h xorg-x11-6.8.x.99/xc/lib/Xcursor/Xcursor.h
--- xorg-x11-6.8.2/xc/lib/Xcursor/Xcursor.h 2004-04-23 22:43:40 +0400
+++ xorg-x11-6.8.x.99/xc/lib/Xcursor/Xcursor.h 2005-06-30 15:40:09 +0400
@@ -76,7 +77,7 @@
#define XCURSOR_LIB_MAJOR 1
#define XCURSOR_LIB_MINOR 1
-#define XCURSOR_LIB_REVISION 2
+#define XCURSOR_LIB_REVISION 4
#define XCURSOR_LIB_VERSION ((XCURSOR_LIB_MAJOR * 10000) + \
(XCURSOR_LIB_MINOR * 100) + \
(XCURSOR_LIB_REVISION))
diff -Naur xorg-x11-6.8.2/xc/lib/Xcursor/xlib.c xorg-x11-6.8.x.99/xc/lib/Xcursor/xlib.c
--- xorg-x11-6.8.2/xc/lib/Xcursor/xlib.c 2004-04-23 22:43:40 +0400
+++ xorg-x11-6.8.x.99/xc/lib/Xcursor/xlib.c 2005-06-30 15:40:09 +0400
@@ -36,6 +37,9 @@
int n;
Atom cursor;
+ if (!dpy || !font)
+ return XcursorFalse;
+
if (font == dpy->cursor_font)
return XcursorTrue;
@@ -86,6 +90,9 @@
XColor _Xconst *background)
{
Cursor cursor = None;
+
+ if (!dpy || !source_font || !mask_font || !foreground || !background)
+ return 0;
if (!XcursorSupportsARGB (dpy) && !XcursorGetThemeCore (dpy))
return None;
@@ -120,6 +127,9 @@
int replace = 0;
XcursorBitmapInfo *bmi;
+ if (!dpy)
+ return;
+
if (!XcursorSupportsARGB (dpy) && !XcursorGetThemeCore (dpy))
return;
@@ -160,9 +170,14 @@
static XcursorBitmapInfo *
_XcursorGetBitmap (Display *dpy, Pixmap bitmap)
{
- XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy);
+ XcursorDisplayInfo *info;
int i;
+ if (!dpy || !bitmap)
+ return NULL;
+
+ info = _XcursorGetDisplayInfo (dpy);
+
if (!info)
return 0;
LockDisplay (dpy);
@@ -233,6 +248,9 @@
int low_addr;
Bool bit_swap;
+ if (!image)
+ return;
+
for (i = 0; i < XCURSOR_BITMAP_HASH_SIZE; i++)
hash[i] = 0;
/*
@@ -302,6 +320,9 @@
XImage *image)
{
XcursorBitmapInfo *bmi;
+
+ if (!dpy || !image)
+ return;
if (!XcursorSupportsARGB (dpy) && !XcursorGetThemeCore (dpy))
return;
@@ -383,6 +404,9 @@
int i;
Cursor cursor;
+ if (!dpy || !foreground || !background)
+ return 0;
+
if (!XcursorSupportsARGB (dpy) && !XcursorGetThemeCore (dpy))
return None;