Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37846786
en ru br
Репозитории ALT
4.0: 7.3.0-alt1
3.0: 6.8.2-alt18
+updates:6.8.2-alt24
www.altlinux.org/Changes

Группа :: Система/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;
     
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin