strchr() can only find what is was asked for
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 90b9e79..99cca41 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -353,6 +353,7 @@
         unsigned long ucs = 0;

         ptrdiff_t delta = 0;

         unsigned mult = 1;

+        const char semicolon = ';';

 

         if ( *(p+2) == 'x' ) {

             // Hexadecimal.

@@ -361,11 +362,12 @@
             }

 

             const char* q = p+3;

-            q = strchr( q, ';' );

+            q = strchr( q, semicolon );

 

-            if ( !q || !*q ) {

+            if ( !q ) {

                 return 0;

             }

+            TIXMLASSERT( *q == semicolon );

 

             delta = q-p;

             --q;

@@ -394,11 +396,12 @@
             }

 

             const char* q = p+2;

-            q = strchr( q, ';' );

+            q = strchr( q, semicolon );

 

-            if ( !q || !*q ) {

+            if ( !q ) {

                 return 0;

             }

+            TIXMLASSERT( *q == semicolon );

 

             delta = q-p;

             --q;