Ensure existing attributes are not leaked on attribute insertion

This commit is contained in:
Dmitry-Me 2016-12-19 12:05:21 +03:00
parent 156bc1b99f
commit 34a3f8e34d
1 changed files with 4 additions and 0 deletions

View File

@ -1717,9 +1717,11 @@ XMLAttribute* XMLElement::FindOrCreateAttribute( const char* name )
attrib = CreateAttribute(); attrib = CreateAttribute();
TIXMLASSERT( attrib ); TIXMLASSERT( attrib );
if ( last ) { if ( last ) {
TIXMLASSERT( last->_next == 0 );
last->_next = attrib; last->_next = attrib;
} }
else { else {
TIXMLASSERT( _rootAttribute == 0 );
_rootAttribute = attrib; _rootAttribute = attrib;
} }
attrib->SetName( name ); attrib->SetName( name );
@ -1777,9 +1779,11 @@ char* XMLElement::ParseAttributes( char* p )
// avoids re-scanning the attribute list. Preferring performance for // avoids re-scanning the attribute list. Preferring performance for
// now, may reconsider in the future. // now, may reconsider in the future.
if ( prevAttribute ) { if ( prevAttribute ) {
TIXMLASSERT( prevAttribute->_next == 0 );
prevAttribute->_next = attrib; prevAttribute->_next = attrib;
} }
else { else {
TIXMLASSERT( _rootAttribute == 0 );
_rootAttribute = attrib; _rootAttribute = attrib;
} }
prevAttribute = attrib; prevAttribute = attrib;