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);