tiny fix in xmlSchemaValidateStream() if a user-provided SAX handler is
* xmlschemas.c: tiny fix in xmlSchemaValidateStream() if a
user-provided SAX handler is given.
diff --git a/xmlschemas.c b/xmlschemas.c
index 7dbada0..fda957a 100644
--- a/xmlschemas.c
+++ b/xmlschemas.c
@@ -24295,7 +24295,7 @@
memset(&schemas_sax, 0, sizeof(xmlSAXHandler));
schemas_sax.initialized = XML_SAX2_MAGIC;
- if (sax == NULL) {
+ if (sax == NULL) {
/*
* go direct, no need for the split block and functions.
*/
@@ -24310,7 +24310,7 @@
schemas_sax.cdataBlock = xmlSchemaSAXHandleCDataSection;
schemas_sax.reference = xmlSchemaSAXHandleReference;
- ctxt->user_data = &split_block;
+ /* ctxt->user_data = &split_block; */
} else {
/*
* Return -1 without parsing if passed a SAXv1 block
@@ -24385,15 +24385,13 @@
schemas_sax.reference = referenceSplit;
schemas_sax.startElementNs = startElementNsSplit;
schemas_sax.endElementNs = endElementNsSplit;
- ctxt->user_data = &split_block;
- }
-
- split_block.user_sax = sax;
- split_block.user_data = user_data;
+ /* ctxt->user_data = &split_block; */
+ split_block.user_sax = sax;
+ split_block.user_data = user_data;
+ }
ctxt->input = input;
ctxt->enc = enc;
ctxt->sax = &schemas_sax;
-
/*
* prepare the parser
*/
@@ -24402,13 +24400,15 @@
return (-1);
old_sax = pctxt->sax;
pctxt->sax = &schemas_sax;
- pctxt->userData = &split_block;
+ if (sax == NULL)
+ pctxt->userData = (void *) ctxt;
+ else
+ pctxt->userData = &split_block;
#if 0
if (options)
xmlCtxtUseOptions(pctxt, options);
#endif
- pctxt->linenumbers = 1;
- pctxt->userData = (void *) ctxt;
+ pctxt->linenumbers = 1;
inputStream = xmlNewIOInputStream(pctxt, input, enc);;
if (inputStream == NULL) {
@@ -24432,7 +24432,7 @@
}
ctxt->parserCtxt = NULL;
ctxt->sax = NULL;
- ctxt->user_data = NULL;
+ /* ctxt->user_data = NULL; */
ctxt->input = NULL;
done: