Unify character casts, reorganize checks
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 2d3a1f7..ad854cb 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -1962,16 +1962,13 @@
_restrictedEntityFlag[i] = false;
}
for( int i=0; i<NUM_ENTITIES; ++i ) {
- TIXMLASSERT( entities[i].value < ENTITY_RANGE );
- if ( entities[i].value < ENTITY_RANGE ) {
- _entityFlag[ (int)entities[i].value ] = true;
- }
+ const char entityValue = entities[i].value;
+ TIXMLASSERT( 0 <= entityValue && entityValue < ENTITY_RANGE );
+ _entityFlag[ (unsigned char)entityValue ] = true;
}
- // Clang doesn't like indexing arrays with 'char'
- // so cast to int. (Looks strange.)
- _restrictedEntityFlag[(int)'&'] = true;
- _restrictedEntityFlag[(int)'<'] = true;
- _restrictedEntityFlag[(int)'>'] = true; // not required, but consistency is nice
+ _restrictedEntityFlag[(unsigned char)'&'] = true;
+ _restrictedEntityFlag[(unsigned char)'<'] = true;
+ _restrictedEntityFlag[(unsigned char)'>'] = true; // not required, but consistency is nice
_buffer.Push( 0 );
}
@@ -2039,7 +2036,7 @@
// Check for entities. If one is found, flush
// the stream up until the entity, write the
// entity, and keep looking.
- if ( flag[(unsigned)(*q)] ) {
+ if ( flag[(unsigned char)(*q)] ) {
while ( p < q ) {
Print( "%c", *p );
++p;