diff options
Diffstat (limited to 'xsltproc')
-rw-r--r-- | xsltproc/xsltproc.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/xsltproc/xsltproc.c b/xsltproc/xsltproc.c index cf1bb4f8..ac4ead3a 100644 --- a/xsltproc/xsltproc.c +++ b/xsltproc/xsltproc.c @@ -160,6 +160,14 @@ xsltprocExternalEntityLoader(const char *URL, const char *ID, warningSAXFunc warning = NULL; int i; + const char *lastsegment = URL; + const char *iter = URL; + + while (*iter != 0) { + if (*iter == '/') + lastsegment = iter + 1; + iter++; + } if ((ctxt != NULL) && (ctxt->sax != NULL)) { warning = ctxt->sax->warning; @@ -179,7 +187,7 @@ xsltprocExternalEntityLoader(const char *URL, const char *ID, newURL = xmlStrdup((const xmlChar *) paths[i]); newURL = xmlStrcat(newURL, (const xmlChar *) "/"); - newURL = xmlStrcat(newURL, (const xmlChar *) URL); + newURL = xmlStrcat(newURL, (const xmlChar *) lastsegment); if (newURL != NULL) { ret = defaultEntityLoader((const char *)newURL, ID, ctxt); xmlFree(newURL); |