In PrintString, move the optimization under the if ( _processEntities ) block and retain the strlen Write in the new else block. Added a test case.

This commit is contained in:
Derek Quam
2018-04-18 13:40:46 -05:00
parent 3cdaf8b15e
commit be69ae6352
2 changed files with 20 additions and 7 deletions

View File

@@ -2523,14 +2523,16 @@ void XMLPrinter::PrintString( const char* p, bool restricted )
++q;
TIXMLASSERT( p <= q );
}
// Flush the remaining string. This will be the entire
// string if an entity wasn't found.
if ( p < q ) {
const size_t delta = q - p;
const int toPrint = ( INT_MAX < delta ) ? INT_MAX : (int)delta;
Write( p, toPrint );
}
}
// Flush the remaining string. This will be the entire
// string if an entity wasn't found.
TIXMLASSERT( p <= q );
if ( !_processEntities || ( p < q ) ) {
const size_t delta = q - p;
const int toPrint = ( INT_MAX < delta ) ? INT_MAX : (int)delta;
Write( p, toPrint );
else {
Write( p );
}
}