libxml-2.9.2 compatibility

This commit is contained in:
Anatol Belski 2015-03-15 18:38:50 +01:00
parent 2ac31872ac
commit af2b066911

View file

@ -306,6 +306,21 @@ static void *php_libxml_streams_IO_open_wrapper(const char *filename, const char
(xmlStrncmp(BAD_CAST uri->scheme, BAD_CAST "file", 4) == 0))) {
resolved_path = xmlURIUnescapeString(filename, 0, NULL);
isescaped = 1;
#if LIBXML_VERSION >= 20902 && defined(PHP_WIN32)
/* Libxml 2.9.2 prefixes local paths with file:/ instead of file://,
thus the php stream wrapper will fail on a valid case. For this
reason the prefix is rather better cut off. */
{
size_t pre_len = sizeof("file:/") - 1;
if (strncasecmp(resolved_path, "file:/", pre_len) == 0
&& '/' != resolved_path[pre_len]) {
xmlChar *tmp = xmlStrdup(resolved_path + pre_len);
xmlFree(resolved_path);
resolved_path = tmp;
}
}
#endif
} else {
resolved_path = (char *)filename;
}