Fixed NULL values to be validated as empty string values (reported by

* xmlschemas.c: Fixed NULL values to be validated as empty
  string values (reported by Dhyanesh to the mailing list).
  Adjusted text concatenation of mixed content.
diff --git a/xmlschemas.c b/xmlschemas.c
index aea885a..c124e06 100644
--- a/xmlschemas.c
+++ b/xmlschemas.c
@@ -20482,6 +20482,8 @@
     */
     if ((! valNeeded) && (type->flags & XML_SCHEMAS_TYPE_FACETSNEEDVALUE))
 	valNeeded = 1;
+    if (value == NULL)
+	value = BAD_CAST "";
     if (IS_ANY_SIMPLE_TYPE(type) || VARIETY_ATOMIC(type)) {
 	xmlSchemaTypePtr biType; /* The built-in type. */
 	/*
@@ -20610,9 +20612,7 @@
 	* VAL TODO: Optimize validation of empty values.
 	* VAL TODO: We do not have computed values for lists.
 	*/
-	itemType = GET_LIST_ITEM_TYPE(type);
-	if (value == NULL)
-	    value = BAD_CAST "";
+	itemType = GET_LIST_ITEM_TYPE(type);	
 	cur = value;
 	do {
 	    while (IS_BLANK_CH(*cur))
@@ -22747,11 +22747,8 @@
 	* Concat the value.
 	*/	
 	if (vctxt->inode->flags & XML_SCHEMA_NODE_INFO_FLAG_OWNED_VALUES) {
-	    xmlChar *tmp;
-
-	    tmp = BAD_CAST xmlStrncatNew(vctxt->inode->value, value, len);
-	    xmlFree((xmlChar *) vctxt->inode->value);
-	    vctxt->inode->value = tmp;
+	    vctxt->inode->value = BAD_CAST xmlStrncat(
+		(xmlChar *) vctxt->inode->value, value, len);
 	} else {
 	    vctxt->inode->value =
 		BAD_CAST xmlStrncatNew(vctxt->inode->value, value, len);