CodeReview Fix: The non-const reference syntax isn't used in the codebase. Should be a pointer.
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 598102b..523ccf4 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -189,7 +189,7 @@
}
-char* StrPair::ParseText( char* p, const char* endTag, int strFlags, int& curLineNum )
+char* StrPair::ParseText( char* p, const char* endTag, int strFlags, int* curLineNumPtr )
{
TIXMLASSERT( p );
TIXMLASSERT( endTag && *endTag );
@@ -204,7 +204,7 @@
Set( start, p, strFlags );
return p + length;
} else if (*p == '\n') {
- ++curLineNum;
+ ++(*curLineNumPtr);
}
++p;
TIXMLASSERT( p );
@@ -239,7 +239,7 @@
TIXMLASSERT( ( _flags & NEEDS_DELETE ) == 0 );
// Trim leading space.
int unusedLineNum(0);
- _start = XMLUtil::SkipWhiteSpace( _start, unusedLineNum );
+ _start = XMLUtil::SkipWhiteSpace( _start, &unusedLineNum );
if ( *_start ) {
const char* p = _start; // the read pointer
@@ -247,7 +247,7 @@
while( *p ) {
if ( XMLUtil::IsWhiteSpace( *p )) {
- p = XMLUtil::SkipWhiteSpace( p, unusedLineNum );
+ p = XMLUtil::SkipWhiteSpace( p, &unusedLineNum );
if ( *p == 0 ) {
break; // don't write to q; this trims the trailing space.
}
@@ -641,7 +641,7 @@
TIXMLASSERT( p );
char* const start = p;
int const startLine = _parseCurLineNum;
- p = XMLUtil::SkipWhiteSpace( p, _parseCurLineNum );
+ p = XMLUtil::SkipWhiteSpace( p, &_parseCurLineNum );
if( !*p ) {
*node = 0;
TIXMLASSERT( p );
@@ -954,7 +954,7 @@
}
-char* XMLNode::ParseDeep( char* p, StrPair* parentEnd, int& curLineNum )
+char* XMLNode::ParseDeep( char* p, StrPair* parentEnd, int* curLineNumPtr )
{
// This is a recursive method, but thinking about it "at the current level"
// it is a pretty simple flat list:
@@ -985,7 +985,7 @@
int nodeLineNum = node->_parseLineNum;
StrPair endTag;
- p = node->ParseDeep( p, &endTag, curLineNum );
+ p = node->ParseDeep( p, &endTag, curLineNumPtr );
if ( !p ) {
DeleteNode( node );
if ( !_document->Error() ) {
@@ -1091,11 +1091,11 @@
}
// --------- XMLText ---------- //
-char* XMLText::ParseDeep( char* p, StrPair*, int& curLineNum )
+char* XMLText::ParseDeep( char* p, StrPair*, int* curLineNumPtr )
{
const char* start = p;
if ( this->CData() ) {
- p = _value.ParseText( p, "]]>", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNum );
+ p = _value.ParseText( p, "]]>", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr );
if ( !p ) {
_document->SetError( XML_ERROR_PARSING_CDATA, start, 0, _parseLineNum );
}
@@ -1107,7 +1107,7 @@
flags |= StrPair::NEEDS_WHITESPACE_COLLAPSING;
}
- p = _value.ParseText( p, "<", flags, curLineNum );
+ p = _value.ParseText( p, "<", flags, curLineNumPtr );
if ( p && *p ) {
return p-1;
}
@@ -1156,11 +1156,11 @@
}
-char* XMLComment::ParseDeep( char* p, StrPair*, int& curLineNum )
+char* XMLComment::ParseDeep( char* p, StrPair*, int* curLineNumPtr )
{
// Comment parses as text.
const char* start = p;
- p = _value.ParseText( p, "-->", StrPair::COMMENT, curLineNum );
+ p = _value.ParseText( p, "-->", StrPair::COMMENT, curLineNumPtr );
if ( p == 0 ) {
_document->SetError( XML_ERROR_PARSING_COMMENT, start, 0, _parseLineNum );
}
@@ -1206,11 +1206,11 @@
}
-char* XMLDeclaration::ParseDeep( char* p, StrPair*, int& curLineNum )
+char* XMLDeclaration::ParseDeep( char* p, StrPair*, int* curLineNumPtr )
{
// Declaration parses as text.
const char* start = p;
- p = _value.ParseText( p, "?>", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNum );
+ p = _value.ParseText( p, "?>", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr );
if ( p == 0 ) {
_document->SetError( XML_ERROR_PARSING_DECLARATION, start, 0, _parseLineNum );
}
@@ -1255,12 +1255,12 @@
}
-char* XMLUnknown::ParseDeep( char* p, StrPair*, int& curLineNum )
+char* XMLUnknown::ParseDeep( char* p, StrPair*, int* curLineNumPtr )
{
// Unknown parses as text.
const char* start = p;
- p = _value.ParseText( p, ">", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNum );
+ p = _value.ParseText( p, ">", StrPair::NEEDS_NEWLINE_NORMALIZATION, curLineNumPtr );
if ( !p ) {
_document->SetError( XML_ERROR_PARSING_UNKNOWN, start, 0, _parseLineNum );
}
@@ -1304,7 +1304,7 @@
return _value.GetStr();
}
-char* XMLAttribute::ParseDeep( char* p, bool processEntities, int& curLineNum )
+char* XMLAttribute::ParseDeep( char* p, bool processEntities, int* curLineNumPtr )
{
// Parse using the name rules: bug fix, was using ParseText before
p = _name.ParseName( p );
@@ -1313,13 +1313,13 @@
}
// Skip white space before =
- p = XMLUtil::SkipWhiteSpace( p, curLineNum );
+ p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr );
if ( *p != '=' ) {
return 0;
}
++p; // move up to opening quote
- p = XMLUtil::SkipWhiteSpace( p, curLineNum );
+ p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr );
if ( *p != '\"' && *p != '\'' ) {
return 0;
}
@@ -1327,7 +1327,7 @@
char endTag[2] = { *p, 0 };
++p; // move past opening quote
- p = _value.ParseText( p, endTag, processEntities ? StrPair::ATTRIBUTE_VALUE : StrPair::ATTRIBUTE_VALUE_LEAVE_ENTITIES, curLineNum );
+ p = _value.ParseText( p, endTag, processEntities ? StrPair::ATTRIBUTE_VALUE : StrPair::ATTRIBUTE_VALUE_LEAVE_ENTITIES, curLineNumPtr );
return p;
}
@@ -1761,14 +1761,14 @@
}
-char* XMLElement::ParseAttributes( char* p, int& curLineNum )
+char* XMLElement::ParseAttributes( char* p, int* curLineNumPtr )
{
const char* start = p;
XMLAttribute* prevAttribute = 0;
// Read the attributes.
while( p ) {
- p = XMLUtil::SkipWhiteSpace( p, curLineNum );
+ p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr );
if ( !(*p) ) {
_document->SetError( XML_ERROR_PARSING_ELEMENT, start, Name(), _parseLineNum );
return 0;
@@ -1782,7 +1782,7 @@
int attrLineNum = attrib->_parseLineNum;
- p = attrib->ParseDeep( p, _document->ProcessEntities(), curLineNum );
+ p = attrib->ParseDeep( p, _document->ProcessEntities(), curLineNumPtr );
if ( !p || Attribute( attrib->Name() ) ) {
DeleteAttribute( attrib );
_document->SetError( XML_ERROR_PARSING_ATTRIBUTE, start, p, attrLineNum );
@@ -1842,10 +1842,10 @@
// <ele></ele>
// <ele>foo<b>bar</b></ele>
//
-char* XMLElement::ParseDeep( char* p, StrPair* strPair, int& curLineNum )
+char* XMLElement::ParseDeep( char* p, StrPair* strPair, int* curLineNumPtr )
{
// Read the element name.
- p = XMLUtil::SkipWhiteSpace( p, curLineNum );
+ p = XMLUtil::SkipWhiteSpace( p, curLineNumPtr );
// The closing element is the </element> form. It is
// parsed just like a regular element then deleted from
@@ -1860,12 +1860,12 @@
return 0;
}
- p = ParseAttributes( p, curLineNum );
+ p = ParseAttributes( p, curLineNumPtr );
if ( !p || !*p || _closingType ) {
return p;
}
- p = XMLNode::ParseDeep( p, strPair, curLineNum );
+ p = XMLNode::ParseDeep( p, strPair, curLineNumPtr );
return p;
}
@@ -2289,13 +2289,13 @@
_parseCurLineNum = 1;
_parseLineNum = 1;
char* p = _charBuffer;
- p = XMLUtil::SkipWhiteSpace( p, _parseCurLineNum );
+ p = XMLUtil::SkipWhiteSpace( p, &_parseCurLineNum );
p = const_cast<char*>( XMLUtil::ReadBOM( p, &_writeBOM ) );
if ( !*p ) {
SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0, 0 );
return;
}
- ParseDeep(p, 0, _parseCurLineNum );
+ ParseDeep(p, 0, &_parseCurLineNum );
}
XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) :