msxml3: Handle libxml2 API breakage.
Thomas Faber
thomas.faber at reactos.org
Thu Jan 10 07:41:05 CST 2019
Signed-off-by: Thomas Faber <thomas.faber at reactos.org>
On 2019-01-09 12:33, Thomas Faber wrote:
> ---
> 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;
>
More information about the wine-devel
mailing list