remove the warning for startDocument(), as it is used by glade (or

* legacy.c: remove the warning for startDocument(), as it is used by
  glade (or glade-python)
* parser.c relaxng.c xmlschemastypes.c: fixed an assorted set of
  invalid accesses found by running some Python based regression
  tests under valgrind. There is still a few leaks reported by the
  relaxng regressions which need some attention.
* doc/Makefile.am: fixed a make install problem c.f. #124539
* include/libxml/parserInternals.h: addition of xmlParserMaxDepth
  patch from crutcher
Daniel
diff --git a/xmlschemastypes.c b/xmlschemastypes.c
index 5920aed..4830924 100644
--- a/xmlschemastypes.c
+++ b/xmlschemastypes.c
@@ -2857,21 +2857,24 @@
 		    xmlSchemaFreeValue(q1);
                     return -1;
 		} else {
+		    int ret = 0;
                     /* normalize y - 14:00 */
                     q2 = xmlSchemaDateNormalize(y, -(14 * SECS_PER_HOUR));
                     q2d = _xmlSchemaDateCastYMToDays(q2) + q2->value.date.day;
-		    xmlSchemaFreeValue(p1);
-		    xmlSchemaFreeValue(q1);
-		    xmlSchemaFreeValue(q2);
                     if (p1d > q2d)
-                        return 1;
+                        ret = 1;
                     else if (p1d == q2d) {
                         sec = TIME_TO_NUMBER(p1) - TIME_TO_NUMBER(q2);
                         if (sec > 0.0)
-                            return 1;
+                            ret = 1;
                         else
-                            return 2; /* indeterminate */
+                            ret = 2; /* indeterminate */
                     }
+		    xmlSchemaFreeValue(p1);
+		    xmlSchemaFreeValue(q1);
+		    xmlSchemaFreeValue(q2);
+		    if (ret != 0)
+		        return(ret);
                 }
             } else {
 		xmlSchemaFreeValue(p1);
@@ -2899,28 +2902,25 @@
 		xmlSchemaFreeValue(q1);
                 return -1;
 	    } else {
+	        int ret = 0;
                 /* normalize x + 14:00 */
                 p2 = xmlSchemaDateNormalize(x, (14 * SECS_PER_HOUR));
                 p2d = _xmlSchemaDateCastYMToDays(p2) + p2->value.date.day;
 
                 if (p2d > q1d) {
-		    xmlSchemaFreeValue(p1);
-		    xmlSchemaFreeValue(q1);
-		    xmlSchemaFreeValue(p2);
-                    return 1;
+                    ret = 1;
 		} else if (p2d == q1d) {
                     sec = TIME_TO_NUMBER(p2) - TIME_TO_NUMBER(q1);
-		    xmlSchemaFreeValue(p1);
-		    xmlSchemaFreeValue(q1);
-		    xmlSchemaFreeValue(p2);
                     if (sec > 0.0)
-                        return 1;
+                        ret = 1;
                     else
-                        return 2; /* indeterminate */
+                        ret = 2; /* indeterminate */
                 }
 		xmlSchemaFreeValue(p1);
 		xmlSchemaFreeValue(q1);
 		xmlSchemaFreeValue(p2);
+		if (ret != 0)
+		    return(ret);
             }
 	} else {
 	    xmlSchemaFreeValue(p1);
@@ -2932,6 +2932,7 @@
      * if the same type then calculate the difference
      */
     if (x->type == y->type) {
+        int ret = 0;
         q1 = xmlSchemaDateNormalize(y, 0);
         q1d = _xmlSchemaDateCastYMToDays(q1) + q1->value.date.day;
 
@@ -2939,26 +2940,22 @@
         p1d = _xmlSchemaDateCastYMToDays(p1) + p1->value.date.day;
 
         if (p1d < q1d) {
-	    xmlSchemaFreeValue(p1);
-	    xmlSchemaFreeValue(q1);
-            return -1;
+            ret = -1;
 	} else if (p1d > q1d) {
-	    xmlSchemaFreeValue(p1);
-	    xmlSchemaFreeValue(q1);
-            return 1;
+            ret = 1;
 	} else {
             double sec;
 
             sec = TIME_TO_NUMBER(p1) - TIME_TO_NUMBER(q1);
-	    xmlSchemaFreeValue(p1);
-	    xmlSchemaFreeValue(q1);
             if (sec < 0.0)
-                return -1;
+                ret = -1;
             else if (sec > 0.0)
-                return 1;
+                ret = 1;
             
         }
-        return 0;
+	xmlSchemaFreeValue(p1);
+	xmlSchemaFreeValue(q1);
+        return(ret);
     }
 
     switch (x->type) {