diff options
-rw-r--r-- | libxml.h | 12 | ||||
-rw-r--r-- | xmlmodule.c | 2 | ||||
-rw-r--r-- | xpath.c | 8 |
3 files changed, 20 insertions, 2 deletions
@@ -60,6 +60,18 @@ int vfprintf(FILE *, const char *, va_list); #include "trio.h" #endif +#if defined(__clang__) || \ + (defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)) +#define XML_IGNORE_PEDANTIC_WARNINGS \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wpedantic\"") +#define XML_POP_WARNINGS \ + _Pragma("GCC diagnostic pop") +#else +#define XML_IGNORE_PEDANTIC_WARNINGS +#define XML_POP_WARNINGS +#endif + /* * Internal variable indicating if a callback has been registered for * node creation/destruction. It avoids spending a lot of time in locking diff --git a/xmlmodule.c b/xmlmodule.c index e3a8bd64..a95ab66a 100644 --- a/xmlmodule.c +++ b/xmlmodule.c @@ -340,6 +340,7 @@ xmlModulePlatformClose(void *handle) static int xmlModulePlatformSymbol(void *handle, const char *name, void **symbol) { +XML_IGNORE_PEDANTIC_WARNINGS #ifdef _WIN32_WCE /* * GetProcAddressA seems only available on WinCE @@ -349,6 +350,7 @@ xmlModulePlatformSymbol(void *handle, const char *name, void **symbol) *symbol = GetProcAddress(handle, name); #endif return (NULL == *symbol) ? -1 : 0; +XML_POP_WARNINGS } #endif /* _WIN32 */ @@ -4880,7 +4880,9 @@ xmlXPathRegisterFuncNS(xmlXPathContextPtr ctxt, const xmlChar *name, return(-1); if (f == NULL) return(xmlHashRemoveEntry2(ctxt->funcHash, name, ns_uri, NULL)); - return(xmlHashAddEntry2(ctxt->funcHash, name, ns_uri, XML_CAST_FPTR(f))); +XML_IGNORE_PEDANTIC_WARNINGS + return(xmlHashAddEntry2(ctxt->funcHash, name, ns_uri, (void *) f)); +XML_POP_WARNINGS } /** @@ -4961,7 +4963,9 @@ xmlXPathFunctionLookupNS(xmlXPathContextPtr ctxt, const xmlChar *name, if (ctxt->funcHash == NULL) return(NULL); - XML_CAST_FPTR(ret) = xmlHashLookup2(ctxt->funcHash, name, ns_uri); +XML_IGNORE_PEDANTIC_WARNINGS + ret = (xmlXPathFunction) xmlHashLookup2(ctxt->funcHash, name, ns_uri); +XML_POP_WARNINGS return(ret); } |