Bug 1256558 - Change MUST_CONVERT to avoid C4311 in VS2015; r?peterv draft
authorGregory Szorc <gps@mozilla.com>
Mon, 21 Mar 2016 12:00:41 -0700
changeset 342984 f19607129f9007e470e06b28220d6c390df0c994
parent 342983 c3d085d5076c1bb11543ee487b06640d6916a62d
child 516668 15824d28d891b36caabc3be2dd1aeb6539b110fb
push id13505
push usergszorc@mozilla.com
push dateMon, 21 Mar 2016 19:00:55 +0000
reviewerspeterv
bugs1256558
milestone48.0a1
Bug 1256558 - Change MUST_CONVERT to avoid C4311 in VS2015; r?peterv This code is cherry picked from the trunk version of expat. MozReview-Commit-ID: 8RDaArq2BwO
parser/expat/lib/xmlparse.c
--- a/parser/expat/lib/xmlparse.c
+++ b/parser/expat/lib/xmlparse.c
@@ -21,17 +21,19 @@
 #include "expat.h"
 
 #ifdef XML_UNICODE
 #define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX
 #define XmlConvert XmlUtf16Convert
 #define XmlGetInternalEncoding XmlGetUtf16InternalEncoding
 #define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS
 #define XmlEncode XmlUtf16Encode
-#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((unsigned long)s) & 1))
+
+/* Using pointer subtraction to convert to integer type. */
+#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((char *)(s) - (char *)NULL) & 1))
 typedef unsigned short ICHAR;
 #else
 #define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX
 #define XmlConvert XmlUtf8Convert
 #define XmlGetInternalEncoding XmlGetUtf8InternalEncoding
 #define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS
 #define XmlEncode XmlUtf8Encode
 #define MUST_CONVERT(enc, s) (!(enc)->isUtf8)