[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freedesktop-xlibs-commit
Subject:    X11/src ConnDis.c, 3.31, 3.32 ErrDes.c, 3.13, 3.14 GetWAttrs.c, 1.3,
From:       Daniel Stone <xlibs-commit () pdx ! freedesktop ! org>
Date:       2005-01-28 18:48:10
Message-ID: 20050128184810.56BDF9EDF7 () gabe ! freedesktop ! org
[Download RAW message or body]

Committed by: daniels

Update of /cvs/xlibs/X11/src
In directory gabe:/tmp/cvs-serv2397/src

Modified Files:
	ConnDis.c ErrDes.c GetWAttrs.c Host.c KeyBind.c LiHosts.c 
	OpenDis.c PutBEvent.c StrKeysym.c XKBBind.c XKBCvt.c XlibInt.c 
	cmsCmap.c cmsColNm.c imDefLkup.c imInsClbk.c imLcFlt.c imRm.c 
	imThaiFlt.c imTrans.c lcEuc.c lcFile.c lcSjis.c lcUTF8.c 
	omGeneric.c 
Log Message:
* include/X11/Xutil.h:
* include/X11/Xlib.h:
* include/X11/Xlibint.h:
* src/ConnDis.c (_X11TransConnectDisplay):
* src/ErrDes.c (XGetErrorDatabaseText):
* src/GetWAttrs.c (XGetWindowAttributes):
* src/Host.c:
* src/KeyBind.c (UCSConvertCase) (XConvertCase):
* src/LiHosts.c:
* src/OpenDis.c:
* src/PutBEvent.c (XPutBackEvent):
* src/StrKeysym.c (XStringToKeysym):
* src/XKBBind.c (XkbRefreshKeyboardMapping):
* src/XKBCvt.c:
* src/XlibInt.c:
* src/cmsCmap.c:
* src/cmsColNm.c:
* src/imDefLkup.c (_XimGetWindowEventmask):
* src/imInsClbk.c (_XimUnRegisterIMInstantiateCallback):
* src/imLcFlt.c (_XimLocalFilter):
* src/imLcIm.c (_XimLocalIMFree):
* src/imRm.c:
* src/imThaiFlt.c (tis2ucs):
* src/imTrans.c:
* src/lcEuc.c (euc_ctstowcs) (euc_ctstombs):
* src/lcFile.c:
* src/lcSjis.c:
* src/lcUTF8.c (create_tofontcs_conv):
* src/omGeneric.c (parse_fontdata):
* src/util/makekeys.c (main):
Resync with X.Org HEAD, including a security fix for the error DB name
and a minor stack smash in XKB code, thread-safe XGetWindowAttributes
and XPutBackEvent, case-conversion cleanups and updates, and large-scale
localisation/input cleanups and adherance to the specification.


Index: ConnDis.c
===================================================================
RCS file: /cvs/xlibs/X11/src/ConnDis.c,v
retrieving revision 3.31
retrieving revision 3.32
diff -u -d -r3.31 -r3.32
--- ConnDis.c	29 Jun 2004 15:42:33 -0000	3.31
+++ ConnDis.c	28 Jan 2005 18:48:07 -0000	3.32
@@ -343,13 +343,13 @@
 	if (olen > sizeof addrbuf) address = Xmalloc (olen);
     }
 
+    if (!address) goto bad;
+
     sprintf(address,"%s/%s:%d",
 	pprotocol ? pprotocol : "",
 	phostname ? phostname : "",
 	idisplay );
 
-    if (!address) goto bad;
-
     /*
      * Make the connection, also need to get the auth address info for
      * the connection.  Do retries in case server host has hit its

Index: ErrDes.c
===================================================================
RCS file: /cvs/xlibs/X11/src/ErrDes.c,v
retrieving revision 3.13
retrieving revision 3.14
diff -u -d -r3.13 -r3.14
--- ErrDes.c	1 Feb 2004 16:16:03 -0000	3.13
+++ ErrDes.c	28 Jan 2005 18:48:07 -0000	3.14
@@ -55,10 +55,6 @@
 #include "Xresource.h"
 #include <stdio.h>
 
-#ifdef X11_DATADIR
-#define ERRORDB X11_DATADIR "/XErrorDB"
-#endif
-
 #ifndef ERRORDB
 #define ERRORDB "/usr/lib/X11/XErrorDB"
 #endif
@@ -149,9 +145,17 @@
 	   mutex unlocked. */
 	XrmDatabase temp_db;
 	int do_destroy;
+	const char *db_name;
 
 	XrmInitialize();
-	temp_db = XrmGetFileDatabase(ERRORDB);
+#ifdef WIN32
+	dbname = getenv("XERRORDB");
+	if (!dbname)
+	    dbname = ERRORDB;
+#else
+	dbname = ERRORDB;
+#endif
+	temp_db = XrmGetFileDatabase(dbname);
 
 	_XLockMutex(_Xglobal_lock);
 	if (!db) {

Index: GetWAttrs.c
===================================================================
RCS file: /cvs/xlibs/X11/src/GetWAttrs.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- GetWAttrs.c	13 Apr 2003 19:22:16 -0000	1.3
+++ GetWAttrs.c	28 Jan 2005 18:48:07 -0000	1.4
@@ -84,10 +84,10 @@
     return True;
 }
 
-Status XGetWindowAttributes(dpy, w, attr)
-     register Display *dpy;
-     Window w;
-     XWindowAttributes *attr;
+Status _XGetWindowAttributes(
+     register Display *dpy,
+     Window w,
+     XWindowAttributes *attr)
 {       
     xGetGeometryReply rep;
     register xResourceReq *req;
@@ -96,7 +96,6 @@
     _XAsyncHandler async;
     _XWAttrsState async_state;
  
-    LockDisplay(dpy);
     GetResReq(GetWindowAttributes, w, req);
 
     async_state.attr_seq = dpy->request;
@@ -113,14 +112,10 @@
 
     if (!_XReply (dpy, (xReply *)&rep, 0, xTrue)) {
 	DeqAsyncHandler(dpy, &async);
-	UnlockDisplay(dpy);
-	SyncHandle();
 	return (0);
 	}
     DeqAsyncHandler(dpy, &async);
     if (!async_state.attr) {
-	UnlockDisplay(dpy);
-	SyncHandle();
 	return (0);
     }
     attr->x = cvtINT16toInt (rep.x);
@@ -138,8 +133,22 @@
 	    break;
 	}
     }
+    return(1);
+}
+
+Status
+XGetWindowAttributes(
+    Display *dpy,
+    Window w,
+    XWindowAttributes *attr)
+{
+    Status ret;
+
+    LockDisplay(dpy);
+    ret = _XGetWindowAttributes(dpy, w, attr);
     UnlockDisplay(dpy);
     SyncHandle();
     return(1);
-}
 
+    return ret;
+}

Index: Host.c
===================================================================
RCS file: /cvs/xlibs/X11/src/Host.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- Host.c	27 Jun 2004 22:31:31 -0000	1.5
+++ Host.c	28 Jan 2005 18:48:07 -0000	1.6
@@ -2,26 +2,36 @@
 /*
 
 Copyright 1986, 1998  The Open Group
+Copyright 2004 Sun Microsystems, Inc.
 
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
+All rights reserved.
 
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+X Window System is a trademark of The Open Group.
 
 */
 /* $XFree86: xc/lib/X11/Host.c,v 1.3 2001/01/17 19:41:37 dawes Exp $ */

Index: KeyBind.c
===================================================================
RCS file: /cvs/xlibs/X11/src/KeyBind.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- KeyBind.c	1 Feb 2004 16:16:03 -0000	1.9
+++ KeyBind.c	28 Jan 2005 18:48:07 -0000	1.10
@@ -456,9 +456,9 @@
 
     /* Basic Latin and Latin-1 Supplement, U+0000 to U+00FF */
     if (code <= 0x00ff) {
-        if (code >= 0x0041 && code <= 0x005a)
+        if (code >= 0x0041 && code <= 0x005a)		/* A-Z */
             *lower += 0x20;
-        else if (code >= 0x0061 && code <= 0x007a)
+        else if (code >= 0x0061 && code <= 0x007a)	/* a-z */
             *upper -= 0x20;
         else if ( (code >= 0x00c0 && code <= 0x00d6) ||
 	          (code >= 0x00d8 && code <= 0x00de) )
@@ -466,10 +466,11 @@
         else if ( (code >= 0x00e0 && code <= 0x00f6) ||
 	          (code >= 0x00f8 && code <= 0x00fe) )
             *upper -= 0x20;
-        else if (code == 0x00ff)
+        else if (code == 0x00ff)			/* y with diaeresis */
             *upper = 0x0178;
-        else if (code == 0x00b5)
+        else if (code == 0x00b5)			/* micro sign */
             *upper = 0x039c;
+	return;
     }
 
     /* Latin Extended-A, U+0100 to U+017F */
@@ -495,6 +496,7 @@
             *lower = 0x00ff; 
         else if (code == 0x017f)
             *upper = 0x0053; 
+	return;
     }
 
     /* Latin Extended-B, U+0180 to U+024F */
@@ -530,6 +532,7 @@
             *lower = 0x01bf;
         else if (code == 0x0220)
             *lower = 0x019e;
+	return;
     }
 
     /* IPA Extensions, U+0250 to U+02AF */
@@ -644,6 +647,12 @@
     KeySym *lower;
     KeySym *upper;
 {
+    /* Latin 1 keysym */
+    if (sym < 0x100) {
+        UCSConvertCase(sym, upper, lower);
+	return;
+    }
+	
     /* Unicode keysym */
     if ((sym & 0xff000000) == 0x01000000) {
         UCSConvertCase((sym & 0x00ffffff), lower, upper);
@@ -652,26 +661,11 @@
         return;
     }
 
+    /* Legacy keysym */
     *lower = sym;
     *upper = sym;
 
     switch(sym >> 8) {
-    case 0: /* Latin 1 */
-	if ((sym >= XK_A) && (sym <= XK_Z))
-	    *lower += (XK_a - XK_A);
-	else if ((sym >= XK_a) && (sym <= XK_z))
-	    *upper -= (XK_a - XK_A);
-	else if ((sym >= XK_Agrave) && (sym <= XK_Odiaeresis))
-	    *lower += (XK_agrave - XK_Agrave);
-	else if ((sym >= XK_agrave) && (sym <= XK_odiaeresis))
-	    *upper -= (XK_agrave - XK_Agrave);
-	else if ((sym >= XK_Ooblique) && (sym <= XK_Thorn))
-	    *lower += (XK_oslash - XK_Ooblique);
-	else if ((sym >= XK_oslash) && (sym <= XK_thorn))
-	    *upper -= (XK_oslash - XK_Ooblique);
-        else if (sym == XK_ydiaeresis)
-            *upper = XK_Ydiaeresis; /* actually a Latin 9 character */
-	break;
     case 1: /* Latin 2 */
 	/* Assume the KeySym is a legal value (ignore discontinuities) */
 	if (sym == XK_Aogonek)
@@ -750,63 +744,6 @@
 		 sym != XK_Greek_finalsmallsigma)
 	    *upper -= (XK_Greek_alpha - XK_Greek_ALPHA);
         break;
-    case 0x12: /* Latin 8 */
-        /* No neat pattern to the values */
-        switch (sym) {
-            case XK_Babovedot:
-                *lower = XK_babovedot; break;
-            case XK_babovedot:
-                *upper = XK_Babovedot; break;
-            case XK_Dabovedot:
-                *lower = XK_dabovedot; break;
-            case XK_Wgrave:
-                *lower = XK_wgrave; break;
-            case XK_Wacute:
-                *lower = XK_wacute; break;
-            case XK_dabovedot:
-                *upper = XK_Dabovedot; break;
-            case XK_Ygrave:
-                *lower = XK_ygrave; break;
-            case XK_Fabovedot:
-                *lower = XK_fabovedot; break;
-            case XK_fabovedot:
-                *upper = XK_Fabovedot; break;
-            case XK_Mabovedot:
-                *lower = XK_mabovedot; break;
-            case XK_mabovedot:
-                *upper = XK_Mabovedot; break;
-            case XK_Pabovedot:
-                *lower = XK_pabovedot; break;
-            case XK_wgrave:
-                *upper = XK_Wgrave; break;
-            case XK_pabovedot:
-                *upper = XK_Pabovedot; break;
-            case XK_wacute:
-                *upper = XK_Wacute; break;
-            case XK_Sabovedot:
-                *lower = XK_sabovedot; break;
-            case XK_ygrave:
-                *upper = XK_Ygrave; break;
-            case XK_Wdiaeresis:
-                *lower = XK_wdiaeresis; break;
-            case XK_wdiaeresis:
-                *upper = XK_Wdiaeresis; break;
-            case XK_sabovedot:
-                *upper = XK_Sabovedot; break;
-            case XK_Wcircumflex:
-                *lower = XK_wcircumflex; break;
-            case XK_Tabovedot:
-                *lower = XK_tabovedot; break;
-            case XK_Ycircumflex:
-                *lower = XK_ycircumflex; break;
-            case XK_wcircumflex:
-                *upper = XK_Wcircumflex; break;
-            case XK_tabovedot:
-                *upper = XK_Tabovedot; break;
-            case XK_ycircumflex:
-                *upper = XK_Ycircumflex; break;
-	    }
-        break;
     case 0x13: /* Latin 9 */
         if (sym == XK_OE)
             *lower = XK_oe;
@@ -815,45 +752,6 @@
         else if (sym == XK_Ydiaeresis)
             *lower = XK_ydiaeresis;
         break;
-    case 0x14: /* Armenian */
-	if (sym >= XK_Armenian_AYB && sym <= XK_Armenian_fe) {
-	    *lower = sym | 1;
-	    *upper = sym & ~1;
-	}
-        break;
-    case 0x16: /* Caucasus, Inupiak, Guarani */
-        if (sym == XK_ocaron || sym == XK_Ocaron) {
-	    *upper = XK_Ocaron;
-	    *lower = XK_ocaron;
-        }
-        else if (sym >= XK_Ccedillaabovedot && sym <= XK_Obarred)
-	    *lower += (XK_ccedillaabovedot - XK_Ccedillaabovedot);
-        else if (sym >= XK_ccedillaabovedot && sym <= XK_obarred)
-	    *upper -= (XK_ccedillaabovedot - XK_Ccedillaabovedot);
-	else if (sym == XK_schwa || sym == XK_SCHWA) {
-	    *lower = XK_schwa;
-	    *upper = XK_SCHWA;
-	}
-	else if (sym == XK_lbelowdot || sym == XK_Lbelowdot) {
-	    *lower = XK_lbelowdot;
-	    *upper = XK_Lbelowdot;
-	}
-	else if (sym == XK_lstrokebelowdot || sym == XK_Lstrokebelowdot) {
-	    *lower = XK_lstrokebelowdot;
-	    *upper = XK_Lstrokebelowdot;
-	}
-	else if (sym == XK_gtilde || sym == XK_Gtilde) {
-	    *lower = XK_gtilde;
-	    *upper = XK_Gtilde;
-	}
-        break;
-    case 0x1e: /* Vietnamese */
-        if ((sym >= XK_Abelowdot && sym <= XK_uhornbelowdot) ||
-	    (sym >= XK_Ybelowdot && sym <= XK_uhorn)) {
-	    *lower = sym | 1;
-	    *upper = sym & ~1;
-        }
-        break;
     }
 }
 

Index: LiHosts.c
===================================================================
RCS file: /cvs/xlibs/X11/src/LiHosts.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- LiHosts.c	27 Jun 2004 22:31:31 -0000	1.6
+++ LiHosts.c	28 Jan 2005 18:48:07 -0000	1.7
@@ -2,26 +2,36 @@
 /*
 
 Copyright 1986, 1998  The Open Group
+Copyright 2004 Sun Microsystems, Inc.
 
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
+All rights reserved.
 
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+X Window System is a trademark of The Open Group.
 
 */
 

Index: OpenDis.c
===================================================================
RCS file: /cvs/xlibs/X11/src/OpenDis.c,v
retrieving revision 3.25
retrieving revision 3.26
diff -u -d -r3.25 -r3.26
--- OpenDis.c	29 Jun 2004 15:42:33 -0000	3.25
+++ OpenDis.c	28 Jan 2005 18:48:07 -0000	3.26
@@ -59,10 +59,6 @@
 } _XBigReqState;
 #endif /* !USE_XCB */
 
-#ifdef WIN32
-int *_Xdebug_p = &_Xdebug;
-#endif
-
 #ifdef XTHREADS
 #include "locking.h"
 int  (*_XInitDisplayLock_fn)(Display *dpy) = NULL;

Index: PutBEvent.c
===================================================================
RCS file: /cvs/xlibs/X11/src/PutBEvent.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- PutBEvent.c	14 Dec 2001 19:54:03 -0000	1.4
+++ PutBEvent.c	28 Jan 2005 18:48:07 -0000	1.5
@@ -33,16 +33,14 @@
 #include "Xlibint.h"
 
 int
-XPutBackEvent (dpy, event)
-	register Display *dpy;
-	register XEvent *event;
-	{
+_XPutBackEvent (
+	register Display *dpy,
+	register XEvent *event)
+{
 	register _XQEvent *qelt;
 
-	LockDisplay(dpy);
 	if (!dpy->qfree) {
     	    if ((dpy->qfree = (_XQEvent *) Xmalloc (sizeof (_XQEvent))) == NULL) {
-		UnlockDisplay(dpy);
 		return 0;
 	    }
 	    dpy->qfree->next = NULL;
@@ -56,6 +54,19 @@
 	if (dpy->tail == NULL)
 	    dpy->tail = qelt;
 	dpy->qlen++;
-	UnlockDisplay(dpy);
 	return 0;
-	}
+}
+
+
+int
+XPutBackEvent (
+    register Display * dpy,
+    register XEvent *event)
+       {
+       int ret;
+
+       LockDisplay(dpy);
+       ret = _XPutBackEvent(dpy, event);
+       UnlockDisplay(dpy);
+       return ret;
+       }

Index: StrKeysym.c
===================================================================
RCS file: /cvs/xlibs/X11/src/StrKeysym.c,v
retrieving revision 3.9
retrieving revision 3.10
diff -u -d -r3.9 -r3.10
--- StrKeysym.c	1 Feb 2004 16:16:03 -0000	3.9
+++ StrKeysym.c	28 Jan 2005 18:48:07 -0000	3.10
@@ -35,10 +35,6 @@
 #include "ks_tables.h"
 #include "Key.h"
 
-#ifdef X11_DATADIR
-#define KEYSYMDB X11_DATADIR "/XKeysymDB"
-#endif
-
 #ifndef KEYSYMDB
 #define KEYSYMDB "/usr/lib/X11/XKeysymDB"
 #endif
@@ -68,8 +64,8 @@
     return keysymdb;
 }
 
-KeySym XStringToKeysym(s)
-    _Xconst char *s;
+KeySym
+XStringToKeysym(_Xconst char *s)
 {
     register int i, n;
     int h;
@@ -92,9 +88,10 @@
     {
 	entry = &_XkeyTable[idx];
 	if ((entry[0] == sig1) && (entry[1] == sig2) &&
-	    !strcmp(s, (char *)entry + 4))
+	    !strcmp(s, (char *)entry + 6))
 	{
-	    val = (entry[2] << 8) | entry[3];
+	    val = (entry[2] << 24) | (entry[3] << 16) |
+                  (entry[4] << 8) | entry[5];
 	    if (!val)
 		val = XK_VoidSymbol;
 	    return val;
@@ -143,7 +140,9 @@
 	    else return NoSymbol;
 
 	}
-	if (val >= 0x01000000)
+	if (val < 0x100)
+            return val;
+	if (val > 0x10ffff || val < 0x100)
 	    return NoSymbol;
         return val | 0x01000000;
     }

Index: XKBBind.c
===================================================================
RCS file: /cvs/xlibs/X11/src/XKBBind.c,v
retrieving revision 3.20
retrieving revision 3.21
diff -u -d -r3.20 -r3.21
--- XKBBind.c	1 Feb 2004 16:16:03 -0000	3.20
+++ XKBBind.c	28 Jan 2005 18:48:07 -0000	3.21
@@ -363,7 +363,7 @@
 
 	if (xkbi->flags&XkbMapPending)
 	     changes= xkbi->changes;
-	else bzero(&changes,sizeof(XkbChangesRec));
+	else bzero(&changes,sizeof(changes));
 	XkbNoteMapChanges(&changes,event,XKB_XLIB_MAP_MASK);
 	LockDisplay(dpy);
 	if ((rtrn=XkbGetMapChanges(dpy,xkbi->desc,&changes))!=Success) {

Index: XKBCvt.c
===================================================================
RCS file: /cvs/xlibs/X11/src/XKBCvt.c,v
retrieving revision 3.36
retrieving revision 3.37
diff -u -d -r3.36 -r3.37
--- XKBCvt.c	1 Feb 2004 16:16:03 -0000	3.36
+++ XKBCvt.c	28 Jan 2005 18:48:07 -0000	3.37
@@ -213,10 +213,6 @@
  * an simplify integration by these companies.
  */
 
-#ifdef X11_DATADIR
-#define CHARSET_FILE X11_DATADIR "/input/charsets"
-#endif
-
 #ifndef CHARSET_FILE
 #define	CHARSET_FILE	"/usr/lib/X11/input/charsets"
 #endif

Index: XlibInt.c
===================================================================
RCS file: /cvs/xlibs/X11/src/XlibInt.c,v
retrieving revision 3.46
retrieving revision 3.47
diff -u -d -r3.46 -r3.47
--- XlibInt.c	16 Jun 2004 22:59:23 -0000	3.46
+++ XlibInt.c	28 Jan 2005 18:48:07 -0000	3.47
@@ -3427,5 +3427,22 @@
     return ret;
 }
 
+#undef _Xdebug
+int _Xdebug = 0;
+int *_Xdebug_p = &_Xdebug;
+void (**_XCreateMutex_fn_p)(LockInfoPtr) = &_XCreateMutex_fn;
+void (**_XFreeMutex_fn_p)(LockInfoPtr) = &_XFreeMutex_fn;
+void (**_XLockMutex_fn_p)(LockInfoPtr
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+    , char * /* file */
+    , int /* line */
 #endif
-
+        ) = &_XLockMutex_fn;
+void (**_XUnlockMutex_fn_p)(LockInfoPtr
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+    , char * /* file */
+    , int /* line */
+#endif
+        ) = &_XUnlockMutex_fn;
+LockInfoPtr *_Xglobal_lock_p = &_Xglobal_lock;
+#endif /* WIN32 */

Index: cmsCmap.c
===================================================================
RCS file: /cvs/xlibs/X11/src/cmsCmap.c,v
retrieving revision 3.4
retrieving revision 3.5
diff -u -d -r3.4 -r3.5
--- cmsCmap.c	5 Apr 2004 09:27:44 -0000	3.4
+++ cmsCmap.c	28 Jan 2005 18:48:07 -0000	3.5
@@ -40,6 +40,7 @@
 #include "Xlibint.h"
 #include "Xcmsint.h"
 #include "Xutil.h"
+#include "Cmap.h"
 #include "Cv.h"
 
 /*

Index: cmsColNm.c
===================================================================
RCS file: /cvs/xlibs/X11/src/cmsColNm.c,v
retrieving revision 3.14
retrieving revision 3.15
diff -u -d -r3.14 -r3.15
--- cmsColNm.c	5 Mar 2004 09:16:42 -0000	3.14
+++ cmsColNm.c	28 Jan 2005 18:48:07 -0000	3.15
@@ -51,10 +51,6 @@
  *      LOCAL DEFINES
  *		#define declarations local to this package.
  */
-#ifdef X11_DATADIR
-#define XCMSDB X11_DATADIR "/Xcms.txt"
-#endif
-
 #ifndef XCMSDB
 #define XCMSDB  "/usr/lib/X11/Xcms.txt"
 #endif

Index: imDefLkup.c
===================================================================
RCS file: /cvs/xlibs/X11/src/imDefLkup.c,v
retrieving revision 3.12
retrieving revision 3.13
diff -u -d -r3.12 -r3.13
--- imDefLkup.c	1 Feb 2004 16:16:04 -0000	3.12
+++ imDefLkup.c	28 Jan 2005 18:48:07 -0000	3.13
@@ -463,7 +463,7 @@
     Xim			im = (Xim )ic->core.im;
     XWindowAttributes	atr;
 
-    if (!XGetWindowAttributes(im->core.display, ic->core.focus_window, &atr))
+    if (!_XGetWindowAttributes(im->core.display, ic->core.focus_window, &atr))
 	return 0;
     return (EVENTMASK)atr.your_event_mask;
 }

Index: imInsClbk.c
===================================================================
RCS file: /cvs/xlibs/X11/src/imInsClbk.c,v
retrieving revision 3.4
retrieving revision 3.5
diff -u -d -r3.4 -r3.5
--- imInsClbk.c	1 Feb 2004 16:16:04 -0000	3.4
+++ imInsClbk.c	28 Jan 2005 18:48:07 -0000	3.5
@@ -254,8 +254,6 @@
 		    _XUnregisterFilter( display, RootWindow(display, 0),
 					_XimFilterPropertyNotify,
 					(XPointer)NULL );
-		    XSelectInput( display, RootWindow(display, 0),
-				  NoEventMask );
 		}
 		else
 		    picb->next = icb->next;

Index: imLcFlt.c
===================================================================
RCS file: /cvs/xlibs/X11/src/imLcFlt.c,v
retrieving revision 1.1.1.4
retrieving revision 1.2
diff -u -d -r1.1.1.4 -r1.2
--- imLcFlt.c	16 Jan 2001 22:11:30 -0000	1.1.1.4
+++ imLcFlt.c	28 Jan 2005 18:48:07 -0000	1.2
@@ -73,7 +73,7 @@
 	    ic->private.local.composed = p;
 	    /* return back to client KeyPressEvent keycode == 0 */
 	    ev->xkey.keycode = 0;
-	    XPutBackEvent(d, ev);
+	    _XPutBackEvent(d, ev);
 	    /* initialize internal state for next key sequence */
 	    ic->private.local.context = ((Xim)ic->core.im)->private.local.top;
 	    return(True);

Index: imRm.c
===================================================================
RCS file: /cvs/xlibs/X11/src/imRm.c,v
retrieving revision 3.13
retrieving revision 3.14
diff -u -d -r3.13 -r3.14
--- imRm.c	1 Feb 2004 16:16:04 -0000	3.13
+++ imRm.c	28 Jan 2005 18:48:07 -0000	3.14
@@ -1860,11 +1860,11 @@
 		0,
 		0},
     {XNSpotLocation, 0,
-		0,
+		0, /*(XIM_MODE_PRE_SET | XIM_MODE_PRE_GET),*/,
 		(XIM_MODE_PRE_CREATE | XIM_MODE_PRE_SET | XIM_MODE_PRE_GET),
 		0,
-		0,
-		0,
+		(XIM_MODE_PRE_SET | XIM_MODE_PRE_GET),
+		(XIM_MODE_PRE_SET | XIM_MODE_PRE_GET),
 		0,
 		0,
 		0,

Index: imThaiFlt.c
===================================================================
RCS file: /cvs/xlibs/X11/src/imThaiFlt.c,v
retrieving revision 3.23
retrieving revision 3.24
diff -u -d -r3.23 -r3.24
--- imThaiFlt.c	29 Jun 2004 15:42:33 -0000	3.23
+++ imThaiFlt.c	28 Jan 2005 18:48:08 -0000	3.24
@@ -506,11 +506,12 @@
    (0<=(wc)&&(wc)<=0x7F) ? \
      (wc) : \
      ((0x0E01<=(wc)&&(wc)<=0x0E5F) ? ((wc)-0x0E00+0xA0) : 0))
+/* "c" is an unsigned char */
 #define tis2ucs(c)  \
   ( \
    ((c)<=0x7F) ? \
      (wchar_t)(c) : \
-     ((0x0A1<=(c)&&(c)<=0x0FF) ? ((wchar_t)(c)-0xA0+0x0E00) : 0))
+     ((0x0A1<=(c)) ? ((wchar_t)(c)-0xA0+0x0E00) : 0))
 
 /*
  * Macros to save and recall last input character in XIC

Index: imTrans.c
===================================================================
RCS file: /cvs/xlibs/X11/src/imTrans.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- imTrans.c	1 Feb 2004 16:16:04 -0000	1.6
+++ imTrans.c	28 Jan 2005 18:48:08 -0000	1.7
@@ -43,6 +43,9 @@
 #include "XimTrans.h"
 #include "XimTrInt.h"
 
+#ifdef WIN32
+#include <X11/Xwindows.h>
+#endif
 
 #ifndef XIM_CONNECTION_RETRIES
 #define XIM_CONNECTION_RETRIES 5

Index: lcEuc.c
===================================================================
RCS file: /cvs/xlibs/X11/src/lcEuc.c,v
retrieving revision 3.13
retrieving revision 3.14
diff -u -d -r3.13 -r3.14
--- lcEuc.c	22 Aug 2003 13:29:16 -0000	3.13
+++ lcEuc.c	28 Jan 2005 18:48:08 -0000	3.14
@@ -832,6 +832,8 @@
     wchar_t wch;
     Ulong wc_encoding;
     CTData ctdp = ctdata;
+    CTData GL_ctdp = ctdp;     /* GL ctdp save */
+    CTData GR_ctdp = ctdp;     /* GR ctdp save */
     Bool save_outbuf = True;
     /* If outbufptr is NULL, doen't save output, but just counts
        a length to hold the output */
@@ -840,6 +842,18 @@
     for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length)
     {
 	ct_type = CT_STD;
+	/* change GL/GR charset */
+	if(ctdp->side == XlcGR && isleftside(*inbufptr)){
+	    /* select GL side */
+	    ctdp = GL_ctdp;
+	    length = ctdp->length;
+	    ct_type = ctdp->ct_type;
+	}else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
+	    /* select GR side */
+	    ctdp = GR_ctdp;
+	    length = ctdp->length;
+	    ct_type = ctdp->ct_type;
+	}
 	if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
 	    for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
 
@@ -856,6 +870,11 @@
 			}
 		    }
 		    ct_type = ctdp->ct_type;
+	            if(ctdp->side == XlcGL){
+	                GL_ctdp = ctdp; /* save GL ctdp */
+	            }else{
+	                GR_ctdp = ctdp; /* save GR ctdp */
+	            }
 		    break;
 		}
 	    }
@@ -1091,6 +1110,8 @@
     unsigned int ct_seglen = 0;
     Uchar ct_type = 0;
     CTData ctdp = &ctdata[0];	/* default */
+    CTData GL_ctdp = ctdp;     /* GL ctdp save */
+    CTData GR_ctdp = ctdp;     /* GR ctdp save */
     Bool save_outbuf = True;
     /* If outbufptr is NULL, doen't save output, but just counts
        a length to hold the output */
@@ -1099,6 +1120,18 @@
     for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length)
     {
 	ct_type = CT_STD;
+	/* change GL/GR charset */
+	if(ctdp->side == XlcGR && isleftside(*inbufptr)){
+	    /* select GL side */
+	    ctdp = GL_ctdp;
+	    length = ctdp->length;
+	    ct_type = ctdp->ct_type;
+	}else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
+	    /* select GR side */
+	    ctdp = GR_ctdp;
+	    length = ctdp->length;
+	    ct_type = ctdp->ct_type;
+	}
 	if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
 
 	    for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
@@ -1116,6 +1149,11 @@
 			}
 		    }
 		    ct_type = ctdp->ct_type;
+	            if(ctdp->side == XlcGL){
+	                GL_ctdp = ctdp; /* save GL ctdp */
+	            }else{
+	                GR_ctdp = ctdp; /* save GR ctdp */
+	            }
 		    break;
 		}
 	    }

Index: lcFile.c
===================================================================
RCS file: /cvs/xlibs/X11/src/lcFile.c,v
retrieving revision 3.34
retrieving revision 3.35
diff -u -d -r3.34 -r3.35
--- lcFile.c	31 Oct 2003 23:43:06 -0000	3.34
+++ lcFile.c	28 Jan 2005 18:48:08 -0000	3.35
@@ -150,6 +150,42 @@
 
     return argc;
 }
+
+#elif defined(WIN32)
+
+/* this is parse_line but skips drive letters at the beginning of the entry */
+static int
+parse_line1(
+    char *line,
+    char **argv,
+    int argsize)
+{
+    int argc = 0;
+    char *p = line;
+
+    while (argc < argsize) {
+       while (isspace(*p)) {
+           ++p;
+       }
+       if (*p == '\0') {
+           break;
+       }
+       argv[argc++] = p;
+        if (isalpha(*p) && p[1] == ':') {
+            p+= 2; /* skip drive letters */
+        }
+       while (*p != ':' && *p != '\n' && *p != '\0') {
+           ++p;
+       }
+       if (*p == '\0') {
+           break;
+       }
+       *p++ = '\0';
+    }
+
+    return argc;
+}
+
 #endif   /* __UNIXOS2__ */
 
 /* Splits a colon separated list of directories, and returns the constituent
@@ -164,7 +200,7 @@
     char *p = path;
     int n, i;
 
-#ifndef __UNIXOS2__
+#if !defined(__UNIXOS2__) && !defined(WIN32)
     n = parse_line(path, argv, argsize);
 #else
     n = parse_line1(path, argv, argsize);
@@ -181,10 +217,6 @@
     return n;
 }
 
-#ifdef X11_DATADIR
-#define XLOCALEDIR X11_DATADIR "/locale"
-#endif
-
 #ifndef XLOCALEDIR
 #define XLOCALEDIR "/usr/lib/X11/locale"
 #endif
@@ -201,6 +233,7 @@
     char *dir;
     int priv = 1;
 
+#ifndef WIN32
     dir = getenv("XLOCALEDIR");
 
     if (dir) {
@@ -239,6 +272,9 @@
 	    }
 #endif
 	}
+#else
+    priv = 0;
+#endif
 	if (!priv) {
 	    len = strlen(dir);
 	    strncpy(p, dir, buf_len);
@@ -336,6 +372,42 @@
     return dst;
 }
 
+/*
+ * normalize_lcname(): remove any '_' and '-' and convert any character
+ * to lower case after the <language>_<territory> part. If result is identical
+ * to argument, free result and
+ * return NULL.
+ */
+static char *
+normalize_lcname (const char *name)
+{
+    char *p, *ret;
+    const char *tmp = name;
+
+    p = ret = Xmalloc(strlen(name) + 1);
+    if (!p)
+       return NULL;
+
+    if (tmp) {
+       while (*tmp && *tmp != '.' && *tmp != '@')
+           *p++ = *tmp++;
+       while (*tmp) {
+           if (*tmp != '-')
+               *p++ = c_tolower(*tmp);
+           tmp++;
+       }
+    }
+    *p = '\0';
+
+    if (strcmp(ret, name) == 0) {
+       Xfree(ret);
+       return NULL;
+    }
+
+    return ret;
+}
+
+
 /************************************************************************/
 char *
 _XlcFileName(
@@ -404,6 +476,7 @@
     char *args[NUM_LOCALEDIR];
     static const char locale_alias[] = LOCALE_ALIAS;
     char *tmp_siname;
+    char *nlc_name = NULL;
 
     xlocaledir (dir, PATH_MAX);
     n = _XlcParsePath(dir, args, NUM_LOCALEDIR);
@@ -413,11 +486,19 @@
 	    sprintf (buf, "%s/%s", args[i], locale_alias);
 	    name = resolve_name (lc_name, buf, LtoR);
 	}
+	if (!name) {
+	    if (!nlc_name)
+	        nlc_name = normalize_lcname(lc_name);
+	    if (nlc_name)
+	        name = resolve_name (nlc_name, buf, LtoR);
+	}
 	if (name != NULL) {
 	    break;
 	}
     }
 
+    if (nlc_name) Xfree(nlc_name);
+
     if (name == NULL) {
 	/* vendor locale name == Xlocale name, no expansion of alias */
 	pub->siname = Xmalloc (strlen (lc_name) + 1);
@@ -491,6 +572,7 @@
     static char locale_alias[] = LOCALE_ALIAS;
     char *target_name = (char*)0;
     char *target_dir = (char*)0;
+    char *nlc_name = NULL;
 
     xlocaledir (dir, PATH_MAX);
     n = _XlcParsePath(dir, args, 256);
@@ -500,12 +582,18 @@
  	     strlen(locale_alias)) < PATH_MAX) {
  	    sprintf (buf, "%s/%s", args[i], locale_alias);
  	    name = resolve_name(lc_name, buf, LtoR);
+            if (!name) {
+                if (!nlc_name)
+                    nlc_name = normalize_lcname(lc_name);
+                if (nlc_name)
+                    name = resolve_name (nlc_name, buf, LtoR);
+            }
  	}
   
  	/* If name is not an alias, use lc_name for locale.dir search */
  	if (name == NULL)
  	    name = lc_name;
- 
+
  	/* look at locale.dir */
  
  	target_dir = args[i];
@@ -533,6 +621,9 @@
  	}
  	name = NULL;
     }
+
+    if (nlc_name) Xfree(nlc_name);
+
     if (target_name == NULL) {
  	/* vendor locale name == Xlocale name, no expansion of alias */
  	target_dir = args[0];

Index: lcSjis.c
===================================================================
RCS file: /cvs/xlibs/X11/src/lcSjis.c,v
retrieving revision 3.10
retrieving revision 3.11
diff -u -d -r3.10 -r3.11
--- lcSjis.c	20 Jan 2003 04:05:31 -0000	3.10
+++ lcSjis.c	28 Jan 2005 18:48:08 -0000	3.11
@@ -991,6 +991,13 @@
 	    ct_state.GR_charset = charset;
 	else if (charset->side == XlcGL)
 	    ct_state.GL_charset = charset;
+
+	if (charset->side == XlcGR) {
+	    clen = charset->length;
+	    do {
+	        (*(Uchar *)(ctptr-clen)) = BIT8ON(*(Uchar *)(ctptr-clen));
+	    } while (--clen);
+	}
     }
 
     *to = (XPointer)ctptr;
@@ -1147,6 +1154,8 @@
     unsigned int ct_seglen = 0;
     Uchar ct_type;
     CTData ctdp = ctdata;	/* default */
+    CTData GL_ctdp = ctdp;     /* GL ctdp save */
+    CTData GR_ctdp = ctdp;     /* GR ctdp save */
 
     if (*from_left > *to_left)
 	*from_left = *to_left;
@@ -1154,6 +1163,18 @@
     for (length = ctdata[Ascii].length; *from_left > 0 ; (*from_left) -= length)
     {
 	ct_type = CT_STD;
+	/* change GL/GR charset */
+	if(ctdp->side == XlcGR && isleftside(*inbufptr)){
+	    /* select GL side */
+	    ctdp = GL_ctdp;
+	    length = ctdp->length;
+	    ct_type = ctdp->ct_type;
+	}else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
+	    /* select GR side */
+	    ctdp = GR_ctdp;
+	    length = ctdp->length;
+	    ct_type = ctdp->ct_type;
+	}
 	if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
 
 	    for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
@@ -1171,6 +1192,11 @@
 			}
 		    }
 		    ct_type = ctdp->ct_type;
+	            if(ctdp->side == XlcGL){
+	                GL_ctdp = ctdp; /* save GL ctdp */
+	            }else{
+	                GR_ctdp = ctdp; /* save GR ctdp */
+	            }
 		    break;
 		}
 	    }
@@ -1265,6 +1291,8 @@
     wchar_t wch;
     Ulong wc_encoding;
     CTData ctdp = ctdata;
+    CTData GL_ctdp = ctdp;     /* GL ctdp save */
+    CTData GR_ctdp = ctdp;     /* GR ctdp save */
 
     if (*from_left > *to_left)
 	*from_left = *to_left;
@@ -1272,6 +1300,18 @@
     for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length )
     {
 	ct_type = CT_STD;
+	/* change GL/GR charset */
+	if(ctdp->side == XlcGR && isleftside(*inbufptr)){
+	    /* select GL side */
+	    ctdp = GL_ctdp;
+	    length = ctdp->length;
+	    ct_type = ctdp->ct_type;
+	}else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
+	    /* select GR side */
+	    ctdp = GR_ctdp;
+	    length = ctdp->length;
+	    ct_type = ctdp->ct_type;
+	}
 	if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
 	    for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
 
@@ -1288,6 +1328,11 @@
 			}
 		    }
 		    ct_type = ctdp->ct_type;
+	            if(ctdp->side == XlcGL){
+	                GL_ctdp = ctdp; /* save GL ctdp */
+	            }else{
+	                GR_ctdp = ctdp; /* save GR ctdp */
+	            }
 		    break;
 		}
 	    }

Index: lcUTF8.c
===================================================================
RCS file: /cvs/xlibs/X11/src/lcUTF8.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- lcUTF8.c	27 Jun 2004 22:31:31 -0000	1.17
+++ lcUTF8.c	28 Jan 2005 18:48:08 -0000	1.18
@@ -1750,7 +1750,13 @@
         }
 	while (count-- > 0) {
 	    XlcCharSet charset = _XlcGetCharSet(*value++);
-	    const char *name = charset->encoding_name;
+	    const char *name;
+
+	    if (charset == (XlcCharSet) NULL)
+	        continue;
+
+	    name = charset->encoding_name;
+
 	    /* If it wasn't already encountered... */
 	    for (k = num - 1; k >= 0; k--)
 		if (!strcmp(preferred[k]->name, name))

Index: omGeneric.c
===================================================================
RCS file: /cvs/xlibs/X11/src/omGeneric.c,v
retrieving revision 3.28
retrieving revision 3.29
diff -u -d -r3.28 -r3.29
--- omGeneric.c	1 Feb 2004 16:16:04 -0000	3.28
+++ omGeneric.c	28 Jan 2005 18:48:08 -0000	3.29
@@ -1055,6 +1055,7 @@
 		      return True;
 		  }
 		  Xfree(font_data->xlfd_name);
+		  font_data->xlfd_name = NULL;
 		  return False;
 	       }
 	       break;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic