In PrintString, move the optimization under the if ( _processEntities ) block and retain the strlen Write in the new else block. Added a test case.
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 89b7913..33cf19f 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -2523,14 +2523,16 @@
++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 );
}
}