Home | History | Annotate | Download | only in patches
      1 Index: source/i18n/csrucode.cpp
      2 ===================================================================
      3 --- source/i18n/csrucode.cpp	(revision 214189)
      4 +++ source/i18n/csrucode.cpp	(working copy)
      5 @@ -31,8 +31,9 @@
      6  int32_t CharsetRecog_UTF_16_BE::match(InputText* textIn)
      7  {
      8      const uint8_t *input = textIn->fRawInput;
      9 +    int32_t length = textIn->fRawLength;
     10  
     11 -    if (input[0] == 0xFE && input[1] == 0xFF) {
     12 +    if (length >=2 && input[0] == 0xFE && input[1] == 0xFF) {
     13          return 100;
     14      }
     15  
     16 @@ -53,8 +54,9 @@
     17  int32_t CharsetRecog_UTF_16_LE::match(InputText* textIn)
     18  {
     19      const uint8_t *input = textIn->fRawInput;
     20 +    int32_t length = textIn->fRawLength;
     21  
     22 -    if (input[0] == 0xFF && input[1] == 0xFE && (input[2] != 0x00 || input[3] != 0x00)) {
     23 +    if (length >= 4 && input[0] == 0xFF && input[1] == 0xFE && (input[2] != 0x00 || input[3] != 0x00)) {
     24          return 100;
     25      }
     26  
     27 @@ -76,7 +78,7 @@
     28      bool hasBOM = FALSE;
     29      int32_t confidence = 0;
     30  
     31 -    if (getChar(input, 0) == 0x0000FEFFUL) {
     32 +    if (limit > 0 && getChar(input, 0) == 0x0000FEFFUL) {
     33          hasBOM = TRUE;
     34      }
     35  
     36