summaryrefslogtreecommitdiff
path: root/xinclude.c
diff options
context:
space:
mode:
Diffstat (limited to 'xinclude.c')
-rw-r--r--xinclude.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/xinclude.c b/xinclude.c
index 66a74695..09c1eef4 100644
--- a/xinclude.c
+++ b/xinclude.c
@@ -1265,6 +1265,7 @@ xmlXIncludeLoadDoc(xmlXIncludeCtxtPtr ctxt, const xmlChar *url,
xmlChar *fragment = NULL;
int i = 0;
int ret = -1;
+ int cacheNr;
#ifdef LIBXML_XPTR_ENABLED
int saveFlags;
#endif
@@ -1365,7 +1366,8 @@ xmlXIncludeLoadDoc(xmlXIncludeCtxtPtr ctxt, const xmlChar *url,
ctxt->urlMax = newSize;
ctxt->urlTab = tmp;
}
- cache = &ctxt->urlTab[ctxt->urlNr++];
+ cacheNr = ctxt->urlNr++;
+ cache = &ctxt->urlTab[cacheNr];
cache->doc = doc;
cache->url = xmlStrdup(URL);
cache->expanding = 0;
@@ -1403,6 +1405,8 @@ xmlXIncludeLoadDoc(xmlXIncludeCtxtPtr ctxt, const xmlChar *url,
*/
cache->expanding = 1;
xmlXIncludeRecurseDoc(ctxt, doc, URL);
+ /* urlTab might be reallocated. */
+ cache = &ctxt->urlTab[cacheNr];
cache->expanding = 0;
loaded: