From c6069c33e3a4a6d48aa059dbe9a78702dabff9cc Mon Sep 17 00:00:00 2001
From: marha <marha@users.sourceforge.net>
Date: Tue, 9 Jul 2013 11:30:31 +0200
Subject: fontconfig libX11 libxcb mesa git update 9 Jul 2013

libxcb           commit a1e67b141a57d39cbcaff1a703d6fc0da1fbb56d
libX11           commit 383e2b0d029482a0f4c39fe00e15397538576fc1
fontconfig       commit 04bd904632b22682c888f658650cdcd322544273
mesa             commit 292368570a13501dfa95b1b0dd70966caf6ffc6b
---
 fontconfig/src/fcxml.c            |  6 ++++--
 libX11/modules/lc/gen/lcGenConv.c | 28 ----------------------------
 libX11/nls/C/XI18N_OBJS           |  2 +-
 libX11/nls/en_US.UTF-8/XI18N_OBJS |  5 ++---
 libX11/nls/iso8859-1/XI18N_OBJS   |  2 +-
 libX11/src/XlibInt.c              |  2 +-
 libxcb/src/man/xcb-examples.3     |  4 ++--
 mesalib/src/glsl/ast_to_hir.cpp   | 30 +++++++++++++++++++-----------
 8 files changed, 30 insertions(+), 49 deletions(-)

diff --git a/fontconfig/src/fcxml.c b/fontconfig/src/fcxml.c
index 61dc6300b..6a2af85e3 100644
--- a/fontconfig/src/fcxml.c
+++ b/fontconfig/src/fcxml.c
@@ -69,8 +69,8 @@ FcTestDestroy (FcTest *test)
 void
 FcRuleDestroy (FcRule *rule)
 {
-    if (rule->next)
-	FcRuleDestroy (rule->next);
+    FcRule *n = rule->next;
+
     switch (rule->type) {
     case FcRuleTest:
 	FcTestDestroy (rule->u.test);
@@ -82,6 +82,8 @@ FcRuleDestroy (FcRule *rule)
 	break;
     }
     free (rule);
+    if (n)
+	FcRuleDestroy (n);
 }
 
 static FcExpr *
diff --git a/libX11/modules/lc/gen/lcGenConv.c b/libX11/modules/lc/gen/lcGenConv.c
index 42d63c529..1041dc709 100644
--- a/libX11/modules/lc/gen/lcGenConv.c
+++ b/libX11/modules/lc/gen/lcGenConv.c
@@ -764,9 +764,6 @@ mbstowcs_org(
         return( 0 );
     }
 
-    if (*from_left > *to_left)
-        *from_left = *to_left;
-
     while (*from_left && *to_left) {
 
 	ch = *inbufptr++;
@@ -921,9 +918,6 @@ wcstombs_org(
     int defstr_len = strlen(default_string);
 
 
-    if (*from_left > *to_left)
-        *from_left = *to_left;
-
     while (*from_left && *to_left) {
 
         wc = *inbufptr++;
@@ -1080,9 +1074,6 @@ wcstocts(
     int from_size = *from_left;
     char *ext_seg_len = NULL;
 
-    if (*from_left > *to_left)
-        *from_left = *to_left;
-
     while (*from_left && *to_left) {
 
         wc = *inbufptr++;
@@ -1272,9 +1263,6 @@ ctstowcs(
         return( 0 );
     }
 
-    if (*from_left > *to_left)
-        *from_left = *to_left;
-
     while (*from_left && *to_left) {
 
 	ch = *inbufptr++;
@@ -1666,9 +1654,6 @@ mbstostr(
         return( 0 );
     }
 
-    if (*from_left > *to_left)
-        *from_left = *to_left;
-
     while (*from_left && *to_left) {
 
 	ch = *inbufptr++;
@@ -1956,10 +1941,6 @@ wcstostr(
     const char *default_string = XLC_PUBLIC(lcd, default_string);
     int defstr_len = strlen(default_string);
 
-
-    if (*from_left > *to_left)
-        *from_left = *to_left;
-
     while (*from_left && *to_left) {
 
         wc = *inbufptr++;
@@ -2114,9 +2095,6 @@ wctocs(
     char *outbufptr = *to;
     int from_size = *from_left;
 
-    if (*from_left > *to_left)
-        *from_left = *to_left;
-
     if (*from_left && *to_left) {
 
         wc = *inbufptr++;
@@ -2427,9 +2405,6 @@ strtombs(
     char *outbufptr = *to;
     int from_size = *from_left;
 
-    if (*from_left > *to_left)
-        *from_left = *to_left;
-
     while (*from_left && *to_left) {
 
         ch = *inbufptr++;
@@ -2537,9 +2512,6 @@ strtowcs(
     wchar_t *outbufptr = (wchar_t *)*to;
     int from_size = *from_left;
 
-    if (*from_left > *to_left)
-        *from_left = *to_left;
-
     while (*from_left && *to_left) {
 
         ch = *inbufptr++;
diff --git a/libX11/nls/C/XI18N_OBJS b/libX11/nls/C/XI18N_OBJS
index 32e4f3588..3a9a1bb5a 100644
--- a/libX11/nls/C/XI18N_OBJS
+++ b/libX11/nls/C/XI18N_OBJS
@@ -3,6 +3,6 @@
 #	XI18N objects table for euro locales
 #
 XLC	common/xlibi18n	_XlcGenericLoader	# XLC_open
-XIM	common/ximcp	_XimOpenIM	# XIM_open
+XIM	common/ximcp	_XimOpenIM _XimRegisterIMInstantiateCallback  _XimUnRegisterIMInstantiateCallback # XIM_open	XIM_register XIM_unregister
 XOM	common/xomGeneric 	_XomGenericOpenOM	# XOM_open
 
diff --git a/libX11/nls/en_US.UTF-8/XI18N_OBJS b/libX11/nls/en_US.UTF-8/XI18N_OBJS
index f201bf435..97b30b976 100644
--- a/libX11/nls/en_US.UTF-8/XI18N_OBJS
+++ b/libX11/nls/en_US.UTF-8/XI18N_OBJS
@@ -3,6 +3,5 @@
 #	XI18N objects table for euro locales
 #
 XLC	common/xlcUTF8Load	_XlcUtf8Loader	        # XLC_open
-XOM	common/xomLTRTTB	_XomGenericOpenOM	# XOM_open
-XIM	common/xiiimp		_SwitchOpenIM		# XIM_open
-XIM	common/xiiimp		_XimpLocalOpenIM	# XIM_open
+XOM	common/xomGeneric	_XomGenericOpenOM	# XOM_open
+XIM	common/ximcp	_XimOpenIM _XimRegisterIMInstantiateCallback  _XimUnRegisterIMInstantiateCallback # XIM_open	XIM_register XIM_unregister
diff --git a/libX11/nls/iso8859-1/XI18N_OBJS b/libX11/nls/iso8859-1/XI18N_OBJS
index 32e4f3588..3a9a1bb5a 100644
--- a/libX11/nls/iso8859-1/XI18N_OBJS
+++ b/libX11/nls/iso8859-1/XI18N_OBJS
@@ -3,6 +3,6 @@
 #	XI18N objects table for euro locales
 #
 XLC	common/xlibi18n	_XlcGenericLoader	# XLC_open
-XIM	common/ximcp	_XimOpenIM	# XIM_open
+XIM	common/ximcp	_XimOpenIM _XimRegisterIMInstantiateCallback  _XimUnRegisterIMInstantiateCallback # XIM_open	XIM_register XIM_unregister
 XOM	common/xomGeneric 	_XomGenericOpenOM	# XOM_open
 
diff --git a/libX11/src/XlibInt.c b/libX11/src/XlibInt.c
index b06e57baa..92a434004 100644
--- a/libX11/src/XlibInt.c
+++ b/libX11/src/XlibInt.c
@@ -239,7 +239,7 @@ void _XSeqSyncFunction(
 static int
 _XPrivSyncFunction (Display *dpy)
 {
-#if XTHREADS
+#ifdef XTHREADS
     assert(!dpy->lock_fns);
 #endif
     assert(dpy->synchandler == _XPrivSyncFunction);
diff --git a/libxcb/src/man/xcb-examples.3 b/libxcb/src/man/xcb-examples.3
index 291af37d0..c02fc0199 100644
--- a/libxcb/src/man/xcb-examples.3
+++ b/libxcb/src/man/xcb-examples.3
@@ -45,11 +45,11 @@ it on xcb@lists.freedesktop.org.
 
 .SH CODING STYLE
 
-Every example uses 4 spaces for indention.
+Every example uses 4 spaces for indentation.
 
 Comments are in asterisks, like /* this */.
 
-No line is longer than 80 characters (including indention).
+No line is longer than 80 characters (including indentation).
 
 .SH SEE ALSO
 .BR xcb_connect (3),
diff --git a/mesalib/src/glsl/ast_to_hir.cpp b/mesalib/src/glsl/ast_to_hir.cpp
index efbd72c18..cbd9ea357 100644
--- a/mesalib/src/glsl/ast_to_hir.cpp
+++ b/mesalib/src/glsl/ast_to_hir.cpp
@@ -2355,17 +2355,25 @@ process_initializer(ir_variable *var, ast_declaration *decl,
 
 	 ir_constant *constant_value = rhs->constant_expression_value();
 	 if (!constant_value) {
-	    _mesa_glsl_error(& initializer_loc, state,
-			     "initializer of %s variable `%s' must be a "
-			     "constant expression",
-			     (type->qualifier.flags.q.constant)
-			     ? "const" : "uniform",
-			     decl->identifier);
-	    if (var->type->is_numeric()) {
-	       /* Reduce cascading errors. */
-	       var->constant_value = ir_constant::zero(state, var->type);
-	    }
-	 } else {
+            /* If ARB_shading_language_420pack is enabled, initializers of
+             * const-qualified local variables do not have to be constant
+             * expressions. Const-qualified global variables must still be
+             * initialized with constant expressions.
+             */
+            if (!state->ARB_shading_language_420pack_enable
+                || state->current_function == NULL) {
+               _mesa_glsl_error(& initializer_loc, state,
+                                "initializer of %s variable `%s' must be a "
+                                "constant expression",
+                                (type->qualifier.flags.q.constant)
+                                ? "const" : "uniform",
+                                decl->identifier);
+               if (var->type->is_numeric()) {
+                  /* Reduce cascading errors. */
+                  var->constant_value = ir_constant::zero(state, var->type);
+               }
+            }
+         } else {
 	    rhs = constant_value;
 	    var->constant_value = constant_value;
 	 }
-- 
cgit v1.2.3