diff --git a/expat/Changes b/expat/Changes index 16ffadd7..536a6344 100644 --- a/expat/Changes +++ b/expat/Changes @@ -1,8 +1,10 @@ -Release 1.95.9 TBD +Release 2.0 TBD - We no longer use the "check" library for C unit testing; we always use the (partial) internal implementation of the API. - Report XML_NS setting via XML_GetFeatureList(). - Fixed headers for use from C++. + - Added XML_LARGE_SIZE switch to enable 64bit values for + byte indexes and line/column numbers. - Updated to use libtool 1.5.10 (the most recent). - Added support for AmigaOS. - Some mostly minor bug fixes. SF issues include: 1006708, diff --git a/expat/doc/reference.html b/expat/doc/reference.html index 574ae317..b91797bd 100644 --- a/expat/doc/reference.html +++ b/expat/doc/reference.html @@ -344,6 +344,16 @@ defined using the wchar_t type; otherwise, unsigned short is used. Defining this implies XML_UNICODE. +
XML_LARGE_SIZE
+
If defined, causes the XML_Size and XML_Index +integer types to be at least 64 bits in size. This is intended to support +processing of very large input streams, where the return values of +XML_GetCurrentByteIndex, +XML_GetCurrentLineNumber and +XML_GetCurrentColumnNumber +could overflow. It may not be supported by all compilers, and is turned +off by default.
+
XML_CONTEXT_BYTES
The number of input bytes of markup context which the parser will ensure are available for reporting via
-long XMLCALL
+XML_Index XMLCALL
 XML_GetCurrentByteIndex(XML_Parser p);
 
@@ -1916,7 +1926,7 @@ the values returned by
-int XMLCALL
+XML_Size XMLCALL
 XML_GetCurrentLineNumber(XML_Parser p);
 
@@ -1925,7 +1935,7 @@ Return the line number of the position. The first line is reported as
-int XMLCALL
+XML_Size XMLCALL
 XML_GetCurrentColumnNumber(XML_Parser p);
 
diff --git a/expat/lib/expat.h b/expat/lib/expat.h index ac1053f6..09c5d14d 100644 --- a/expat/lib/expat.h +++ b/expat/lib/expat.h @@ -905,9 +905,9 @@ XML_GetErrorCode(XML_Parser parser); was detected; otherwise the location is the location of the last parse event, as described above. */ -XMLPARSEAPI(int) XML_GetCurrentLineNumber(XML_Parser parser); -XMLPARSEAPI(int) XML_GetCurrentColumnNumber(XML_Parser parser); -XMLPARSEAPI(long) XML_GetCurrentByteIndex(XML_Parser parser); +XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser); +XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser); +XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser); /* Return the number of bytes in the current event. Returns 0 if the event is in an internal entity. diff --git a/expat/lib/expat_external.h b/expat/lib/expat_external.h index 7202e119..ddb162d8 100644 --- a/expat/lib/expat_external.h +++ b/expat/lib/expat_external.h @@ -94,6 +94,14 @@ typedef char XML_Char; typedef char XML_LChar; #endif /* XML_UNICODE */ +#ifdef XML_LARGE_SIZE /* Use large integers for counts and positions. */ +typedef long long XML_Index; +typedef unsigned long long XML_Size; +#else +typedef long XML_Index; +typedef unsigned long XML_Size; +#endif /* XML_LARGE_SIZE */ + #ifdef __cplusplus } #endif diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c index 453077fb..04f8b914 100644 --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c @@ -458,7 +458,7 @@ struct XML_ParserStruct { char *m_bufferEnd; /* allocated end of buffer */ const char *m_bufferLim; - long m_parseEndByteIndex; + XML_Index m_parseEndByteIndex; const char *m_parseEndPtr; XML_Char *m_dataBuf; XML_Char *m_dataBufEnd; @@ -1751,7 +1751,7 @@ XML_GetErrorCode(XML_Parser parser) return errorCode; } -long XMLCALL +XML_Index XMLCALL XML_GetCurrentByteIndex(XML_Parser parser) { if (eventPtr) @@ -1780,7 +1780,7 @@ XML_GetInputContext(XML_Parser parser, int *offset, int *size) return (char *) 0; } -int XMLCALL +XML_Size XMLCALL XML_GetCurrentLineNumber(XML_Parser parser) { if (eventPtr && eventPtr >= positionPtr) { @@ -1790,7 +1790,7 @@ XML_GetCurrentLineNumber(XML_Parser parser) return position.lineNumber + 1; } -int XMLCALL +XML_Size XMLCALL XML_GetCurrentColumnNumber(XML_Parser parser) { if (eventPtr && eventPtr >= positionPtr) { diff --git a/expat/lib/xmltok.h b/expat/lib/xmltok.h index 1ecd05f8..ca867aa6 100644 --- a/expat/lib/xmltok.h +++ b/expat/lib/xmltok.h @@ -111,8 +111,8 @@ extern "C" { typedef struct position { /* first line and first column are 0 not 1 */ - unsigned long lineNumber; - unsigned long columnNumber; + XML_Size lineNumber; + XML_Size columnNumber; } POSITION; typedef struct {