in case of content model validity error, don't print it if validity

* valid.c: in case of content model validity error, don't
  print it if validity warnings were not requested.
Daniel
diff --git a/valid.c b/valid.c
index 6d02260..69584d3 100644
--- a/valid.c
+++ b/valid.c
@@ -3404,7 +3404,7 @@
 
 static int
 xmlValidateElementType(xmlValidCtxtPtr ctxt) {
-    int ret = -1, tmp;
+    int ret = -1;
     int determinist = 1;
 
     NODE = xmlValidateSkipIgnorable(NODE);
@@ -3973,25 +3973,36 @@
 	ret = xmlValidateElementType(ctxt);
     }
     if ((warn) && ((ret != 1) && (ret != -3))) {
-	char expr[5000];
-	char list[5000];
+	if ((ctxt != NULL) && (ctxt->warning != NULL)) {
+	    char expr[5000];
+	    char list[5000];
 
-	expr[0] = 0;
-	xmlSnprintfElementContent(expr, 5000, cont, 1);
-	list[0] = 0;
-	if (repl != NULL)
-	    xmlSnprintfElements(list, 5000, repl, 1);
-	else
-	    xmlSnprintfElements(list, 5000, child, 1);
+	    expr[0] = 0;
+	    xmlSnprintfElementContent(expr, 5000, cont, 1);
+	    list[0] = 0;
+	    if (repl != NULL)
+		xmlSnprintfElements(list, 5000, repl, 1);
+	    else
+		xmlSnprintfElements(list, 5000, child, 1);
 
-	if (name != NULL) {
-	    VERROR(ctxt->userData,
-   "Element %s content doesn't follow the Dtd\nExpecting %s, got %s\n",
-	       name, expr, list);
+	    if (name != NULL) {
+		VERROR(ctxt->userData,
+	   "Element %s content doesn't follow the Dtd\nExpecting %s, got %s\n",
+		       name, expr, list);
+	    } else {
+		VERROR(ctxt->userData,
+	   "Element content doesn't follow the Dtd\nExpecting %s, got %s\n",
+		       expr, list);
+	    }
 	} else {
-	    VERROR(ctxt->userData,
-       "Element content doesn't follow the Dtd\nExpecting %s, got %s\n",
-	       expr, list);
+	    if (name != NULL) {
+		VERROR(ctxt->userData,
+		       "Element %s content doesn't follow the Dtd\n",
+		       name);
+	    } else {
+		VERROR(ctxt->userData,
+		       "Element content doesn't follow the Dtd\n");
+	    }
 	}
 	ret = 0;
     }