1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-03-19 14:50:07 +03:00

Use memcpy to avoid pointer cast warnings

This commit is contained in:
Nick Wellnhofer 2025-03-04 18:42:35 +01:00
parent d9ea76505d
commit 03be993ce5
5 changed files with 21 additions and 55 deletions

View File

@ -77,43 +77,6 @@
#endif
#endif
/*
* Warnings pragmas, should be moved from public headers
*/
#if defined(__LCC__)
#define XML_IGNORE_FPTR_CAST_WARNINGS
#define XML_POP_WARNINGS \
_Pragma("diag_default 1215")
#elif defined(__clang__) || (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)
#if defined(__clang__) || (__GNUC__ * 100 + __GNUC_MINOR__ >= 800)
#define XML_IGNORE_FPTR_CAST_WARNINGS \
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wpedantic\"") \
_Pragma("GCC diagnostic ignored \"-Wcast-function-type\"")
#else
#define XML_IGNORE_FPTR_CAST_WARNINGS \
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wpedantic\"")
#endif
#define XML_POP_WARNINGS \
_Pragma("GCC diagnostic pop")
#elif defined(_MSC_VER) && _MSC_VER >= 1400
#define XML_IGNORE_FPTR_CAST_WARNINGS __pragma(warning(push))
#define XML_POP_WARNINGS __pragma(warning(pop))
#else
#define XML_IGNORE_FPTR_CAST_WARNINGS
#define XML_POP_WARNINGS
#endif
/*
* Originally declared in xmlversion.h which is generated
*/

View File

@ -65,19 +65,22 @@
* Macros to ignore deprecation warnings
*/
#if defined(__LCC__)
#define XML_IGNORE_DEPRECATION_WARNINGS \
_Pragma("diag_suppress 1215")
#define XML_IGNORE_DEPRECATION_WARNINGS _Pragma("diag_suppress 1215")
#define XML_POP_WARNINGS _Pragma("diag_default 1215")
#elif defined(__clang__) || \
(defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406))
#define XML_IGNORE_DEPRECATION_WARNINGS \
(defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406))
#define XML_IGNORE_DEPRECATION_WARNINGS \
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
#define XML_POP_WARNINGS _Pragma("GCC diagnostic pop")
#elif defined (_MSC_VER) && (_MSC_VER >= 1400)
#define XML_IGNORE_DEPRECATION_WARNINGS \
#define XML_IGNORE_DEPRECATION_WARNINGS \
__pragma(warning(push)) \
__pragma(warning(disable : 4996))
#define XML_POP_WARNINGS __pragma(warning(pop))
#else
#define XML_IGNORE_DEPRECATION_WARNINGS
#define XML_IGNORE_DEPRECATION_WARNINGS
#define XML_POP_WARNINGS
#endif
#define PyxmlNode_Get(v) (((v) == Py_None) ? NULL : \

View File

@ -112,9 +112,8 @@ libxml_PyFileGet(PyObject *f) {
if (hntdll == NULL)
return(NULL);
XML_IGNORE_FPTR_CAST_WARNINGS
NtQueryInformationFile = (t_NtQueryInformationFile)GetProcAddress(hntdll, "NtQueryInformationFile");
XML_POP_WARNINGS
NtQueryInformationFile = (t_NtQueryInformationFile) (void (*)(void))
GetProcAddress(hntdll, "NtQueryInformationFile");
if (NtQueryInformationFile != NULL &&
(NtQueryInformationFile((HANDLE)w_fh,

View File

@ -289,10 +289,10 @@ xmlModulePlatformClose(void *handle)
static int
xmlModulePlatformSymbol(void *handle, const char *name, void **symbol)
{
XML_IGNORE_FPTR_CAST_WARNINGS
*symbol = GetProcAddress(handle, name);
FARPROC proc = GetProcAddress(handle, name);
memcpy(symbol, &proc, sizeof(proc));
return (NULL == *symbol) ? -1 : 0;
XML_POP_WARNINGS
}
#endif /* _WIN32 */

13
xpath.c
View File

@ -3819,6 +3819,7 @@ int
xmlXPathRegisterFuncNS(xmlXPathContextPtr ctxt, const xmlChar *name,
const xmlChar *ns_uri, xmlXPathFunction f) {
int ret;
void *payload;
if (ctxt == NULL)
return(-1);
@ -3833,9 +3834,8 @@ xmlXPathRegisterFuncNS(xmlXPathContextPtr ctxt, const xmlChar *name,
}
if (f == NULL)
return(xmlHashRemoveEntry2(ctxt->funcHash, name, ns_uri, NULL));
XML_IGNORE_FPTR_CAST_WARNINGS
ret = xmlHashAddEntry2(ctxt->funcHash, name, ns_uri, (void *) f);
XML_POP_WARNINGS
memcpy(&payload, &f, sizeof(f));
ret = xmlHashAddEntry2(ctxt->funcHash, name, ns_uri, payload);
if (ret < 0) {
xmlXPathErrMemory(ctxt);
return(-1);
@ -3892,6 +3892,7 @@ xmlXPathFunction
xmlXPathFunctionLookupNS(xmlXPathContextPtr ctxt, const xmlChar *name,
const xmlChar *ns_uri) {
xmlXPathFunction ret;
void *payload;
if (ctxt == NULL)
return(NULL);
@ -3926,9 +3927,9 @@ xmlXPathFunctionLookupNS(xmlXPathContextPtr ctxt, const xmlChar *name,
if (ctxt->funcHash == NULL)
return(NULL);
XML_IGNORE_FPTR_CAST_WARNINGS
ret = (xmlXPathFunction) xmlHashLookup2(ctxt->funcHash, name, ns_uri);
XML_POP_WARNINGS
payload = xmlHashLookup2(ctxt->funcHash, name, ns_uri);
memcpy(&ret, &payload, sizeof(payload));
return(ret);
}