fixed problem with "recursive" include (fallback contains another include
* xinclude.c: fixed problem with "recursive" include (fallback
contains another include - Bug 129969)
diff --git a/xinclude.c b/xinclude.c
index 0b34c3e..2697cfa 100644
--- a/xinclude.c
+++ b/xinclude.c
@@ -1760,11 +1760,26 @@
*/
static int
xmlXIncludeLoadFallback(xmlXIncludeCtxtPtr ctxt, xmlNodePtr fallback, int nr) {
+ xmlXIncludeCtxtPtr newctxt;
+ int ret = 0;
+
if ((fallback == NULL) || (ctxt == NULL))
return(-1);
+ /*
+ * It's possible that the fallback also has 'includes'
+ * (Bug 129969), so we re-process the fallback just in case
+ */
+ newctxt = xmlXIncludeNewContext(ctxt->doc);
+ if (newctxt == NULL)
+ return (-1);
+ xmlXIncludeSetFlags(newctxt, ctxt->parseFlags);
+ ret = xmlXIncludeDoProcess(newctxt, ctxt->doc, fallback->children);
+ if ((ret >=0) && (ctxt->nbErrors > 0))
+ ret = -1;
+ xmlXIncludeFreeContext(newctxt);
ctxt->incTab[nr]->inc = xmlCopyNodeList(fallback->children);
- return(0);
+ return(ret);
}
/************************************************************************