msxml3: Handle libxml2 API breakage.
Thomas Faber
thomas.faber at reactos.org
Wed Jan 9 05:33:37 CST 2019
---
v2.9.8 adds 'const' to the callback function signatures, which causes
warnings such as:
schema.c: In function ‘cache_add_entry’:
schema.c:1008:47: error: passing argument 3 of ‘xmlHashRemoveEntry’ from incompatible pointer type [-Werror=incompatible-pointer-types]
if (xmlHashRemoveEntry(cache->cache, uri, cache_free))
^~~~~~~~~~
In file included from /usr/include/libxml2/libxml/parser.h:18,
from /usr/include/libxml2/libxml/xmlerror.h:10,
from schema.c:29:
/usr/include/libxml2/libxml/hash.h:160:47: note: expected ‘xmlHashDeallocator’ {aka ‘void (*)(void *, const unsigned char *)’} but argument is of type ‘void (*)(void *, xmlChar *)’ {aka ‘void (*)(void *, unsigned char *)’}
xmlHashDeallocator f);
~~~~~~~~~~~~~~~~~~~^
This isn't the prettiest solution, but I think it's better than casting
the function pointers. Happy to take ideas to make it nicer.
dlls/msxml3/schema.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/dlls/msxml3/schema.c b/dlls/msxml3/schema.c
index 80879852041a..e385b9b56357 100644
--- a/dlls/msxml3/schema.c
+++ b/dlls/msxml3/schema.c
@@ -52,6 +52,12 @@
WINE_DEFAULT_DEBUG_CHANNEL(msxml);
+#if LIBXML_VERSION >= 20908
+#define XMLHASH_CONST const
+#else
+#define XMLHASH_CONST
+#endif
+
/* We use a chained hashtable, which can hold any number of schemas
* TODO: grow/shrink hashtable depending on load factor
* TODO: implement read-only where appropriate
@@ -980,7 +986,7 @@ static cache_entry* cache_entry_from_url(VARIANT url, xmlChar const* nsURI, MSXM
return entry;
}
-static void cache_free(void* data, xmlChar* name /* ignored */)
+static void cache_free(void* data, XMLHASH_CONST xmlChar* name /* ignored */)
{
cache_entry_release((cache_entry*)data);
}
@@ -1397,7 +1403,7 @@ static HRESULT WINAPI schema_cache_get_namespaceURI(IXMLDOMSchemaCollection2* if
return S_OK;
}
-static void cache_copy(void* data, void* dest, xmlChar* name)
+static void cache_copy(void* data, void* dest, XMLHASH_CONST xmlChar* name)
{
schema_cache* This = (schema_cache*) dest;
cache_entry* entry = (cache_entry*) data;
--
2.20.1
More information about the wine-devel
mailing list