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;