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( '>' );

 }