Minor performance tweaks
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 233243b..6d00922 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -2489,7 +2489,7 @@
for( int i=0; i<NUM_ENTITIES; ++i ) {
if ( entities[i].value == *q ) {
Putc( '&' );
- Write( entities[i].pattern );
+ Write( entities[i].pattern, entities[i].length );
Putc( ';' );
entityPatternPrinted = true;
break;
@@ -2510,7 +2510,9 @@
// string if an entity wasn't found.
TIXMLASSERT( p <= q );
if ( !_processEntities || ( p < q ) ) {
- Write( p );
+ const size_t delta = q - p;
+ const int toPrint = ( INT_MAX < delta ) ? INT_MAX : (int)delta;
+ Write( p, toPrint );
}
}
@@ -2551,11 +2553,11 @@
void XMLPrinter::PushAttribute( const char* name, const char* value )
{
TIXMLASSERT( _elementJustOpened );
- Write( " " );
+ Putc ( ' ' );
Write( name );
Write( "=\"" );
PrintString( value, false );
- Write( "\"" );
+ Putc ( '\"' );
}
@@ -2740,7 +2742,7 @@
Write( "<!" );
Write( value );
- Write( ">" );
+ Putc( '>' );
}