mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-24 13:33:01 +03:00
Fix pointer/int cast warnings on 64-bit Windows
On 64-bit Windows, `long` is 32 bits wide and can't hold a pointer. Switch to ptrdiff_t instead which should be the same size as a pointer on every somewhat sane platform without requiring C99 types like intptr_t. Fixes bug 788312. Thanks to J. Peter Mugaas for the report and initial patch.
This commit is contained in:
17
parser.c
17
parser.c
@@ -1335,7 +1335,7 @@ xmlAddSpecialAttr(xmlParserCtxtPtr ctxt,
|
||||
return;
|
||||
|
||||
xmlHashAddEntry2(ctxt->attsSpecial, fullname, fullattr,
|
||||
(void *) (long) type);
|
||||
(void *) (ptrdiff_t) type);
|
||||
return;
|
||||
|
||||
mem_error:
|
||||
@@ -1354,7 +1354,7 @@ xmlCleanSpecialAttrCallback(void *payload, void *data,
|
||||
const xmlChar *unused ATTRIBUTE_UNUSED) {
|
||||
xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) data;
|
||||
|
||||
if (((long) payload) == XML_ATTRIBUTE_CDATA) {
|
||||
if (((ptrdiff_t) payload) == XML_ATTRIBUTE_CDATA) {
|
||||
xmlHashRemoveEntry2(ctxt->attsSpecial, fullname, fullattr, NULL);
|
||||
}
|
||||
}
|
||||
@@ -1866,7 +1866,7 @@ nameNsPush(xmlParserCtxtPtr ctxt, const xmlChar * value,
|
||||
ctxt->name = value;
|
||||
ctxt->pushTab[ctxt->nameNr * 3] = (void *) prefix;
|
||||
ctxt->pushTab[ctxt->nameNr * 3 + 1] = (void *) URI;
|
||||
ctxt->pushTab[ctxt->nameNr * 3 + 2] = (void *) (long) nsNr;
|
||||
ctxt->pushTab[ctxt->nameNr * 3 + 2] = (void *) (ptrdiff_t) nsNr;
|
||||
return (ctxt->nameNr++);
|
||||
mem_error:
|
||||
xmlErrMemory(ctxt, NULL);
|
||||
@@ -9070,8 +9070,8 @@ xmlParseAttribute2(xmlParserCtxtPtr ctxt,
|
||||
if (ctxt->attsSpecial != NULL) {
|
||||
int type;
|
||||
|
||||
type = (int) (long) xmlHashQLookup2(ctxt->attsSpecial,
|
||||
pref, elem, *prefix, name);
|
||||
type = (int) (ptrdiff_t) xmlHashQLookup2(ctxt->attsSpecial,
|
||||
pref, elem, *prefix, name);
|
||||
if (type != 0)
|
||||
normalize = 1;
|
||||
}
|
||||
@@ -11532,9 +11532,10 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
|
||||
}
|
||||
if (ctxt->sax2) {
|
||||
xmlParseEndTag2(ctxt,
|
||||
(void *) ctxt->pushTab[ctxt->nameNr * 3 - 3],
|
||||
(void *) ctxt->pushTab[ctxt->nameNr * 3 - 2], 0,
|
||||
(int) (long) ctxt->pushTab[ctxt->nameNr * 3 - 1], 0);
|
||||
(void *) ctxt->pushTab[ctxt->nameNr * 3 - 3],
|
||||
(void *) ctxt->pushTab[ctxt->nameNr * 3 - 2], 0,
|
||||
(int) (ptrdiff_t)
|
||||
ctxt->pushTab[ctxt->nameNr * 3 - 1], 0);
|
||||
nameNsPop(ctxt);
|
||||
}
|
||||
#ifdef LIBXML_SAX1_ENABLED
|
||||
|
||||
Reference in New Issue
Block a user