Resolve crash when printing malformed entities - issue 291
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index ef00f13..3d7e2d1 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -228,11 +228,19 @@
                         const int buflen = 10;

                         char buf[buflen] = { 0 };

                         int len = 0;

-                        p = const_cast<char*>( XMLUtil::GetCharacterRef( p, buf, &len ) );

-                        TIXMLASSERT( 0 <= len && len <= buflen );

-                        TIXMLASSERT( q + len <= p );

-                        memcpy( q, buf, len );

-                        q += len;

+                        char* adjusted = const_cast<char*>( XMLUtil::GetCharacterRef( p, buf, &len ) );

+                        if ( adjusted == 0 ) {

+                            *q = *p;

+                            ++p;

+                            ++q;

+                        }

+                        else {

+                            TIXMLASSERT( 0 <= len && len <= buflen );

+                            TIXMLASSERT( q + len <= adjusted );

+                            p = adjusted;

+                            memcpy( q, buf, len );

+                            q += len;

+                        }

                     }

                     else {

                         int i=0;