(file) Return to String.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/String.cpp between version 1.136 and 1.136.2.1

version 1.136, 2009/12/15 11:39:34 version 1.136.2.1, 2010/07/26 09:16:04
Line 266 
Line 266 
         throw NullPointer();         throw NullPointer();
 } }
  
 static void _StringThrowBadUTF8(Uint32 index)  #define BADUTF8_MAX_CLEAR_CHAR 40
   #define BADUTF8_MAX_CHAR_TO_HEX 10
   
   static void _formatBadUTF8Chars(
       char* buffer,
       Uint32 index,
       const char* q,
       size_t n )
   {
   
       char tmp[20];
       const char* start;
   
       size_t clearChar =
           (( index < BADUTF8_MAX_CLEAR_CHAR ) ? index : BADUTF8_MAX_CLEAR_CHAR );
       size_t charToHex =
           ((n-index-1) < BADUTF8_MAX_CHAR_TO_HEX ?
               (n-index-1) : BADUTF8_MAX_CHAR_TO_HEX );
   
       if (index < BADUTF8_MAX_CLEAR_CHAR)
       {
           start = q;
       } else
       {
           start = &(q[ index - BADUTF8_MAX_CLEAR_CHAR]);
       }
   
       // Intialize the buffer with the first character as '\0' to be able to use
       // strnchat() and strcat()
       buffer[0] = 0;
       // Start the buffer with the valid UTF8 chars
       strncat(buffer,start,clearChar);
       for (size_t i = clearChar, j = 0; j <= charToHex; i++,j++ )
 { {
           tmp[0] = 0;
           sprintf(&(tmp[0])," 0x%02X",(Uint8)start[i]);
           strncat(buffer,&(tmp[0]),5);
       }
   
   }
   
   static void _StringThrowBadUTF8(Uint32 index, const char* q, size_t n)
   {
       char buffer[1024];
   
       _formatBadUTF8Chars(&(buffer[0]),index,q,n);
   
     MessageLoaderParms parms(     MessageLoaderParms parms(
         "Common.String.BAD_UTF8",          "Common.String.BAD_UTF8_LONG",
         "The byte sequence starting at index $0 "         "The byte sequence starting at index $0 "
         "is not valid UTF-8 encoding.",          "is not valid UTF-8 encoding: $1",
         index);          index,buffer);
   
     throw Exception(parms);     throw Exception(parms);
 } }
  
Line 435 
Line 481 
     if (rep->size == size_t(-1))     if (rep->size == size_t(-1))
     {     {
         StringRep::free(rep);         StringRep::free(rep);
         _StringThrowBadUTF8((Uint32)utf8_error_index);          _StringThrowBadUTF8((Uint32)utf8_error_index, data,size);
     }     }
  
     rep->data[rep->size] = '\0';     rep->data[rep->size] = '\0';
Line 525 
Line 571 
     {     {
         StringRep::free(_rep);         StringRep::free(_rep);
         _rep = &StringRep::_emptyRep;         _rep = &StringRep::_emptyRep;
         _StringThrowBadUTF8((Uint32)utf8_error_index);          _StringThrowBadUTF8((Uint32)utf8_error_index,s2,n2);
     }     }
  
     _rep->size = n1 + tmp;     _rep->size = n1 + tmp;
Line 545 
Line 591 
     {     {
         StringRep::free(_rep);         StringRep::free(_rep);
         _rep = &StringRep::_emptyRep;         _rep = &StringRep::_emptyRep;
         _StringThrowBadUTF8((Uint32)utf8_error_index);          _StringThrowBadUTF8((Uint32)utf8_error_index,s1,n1);
     }     }
  
     _rep->size = n2 + tmp;     _rep->size = n2 + tmp;
Line 598 
Line 644 
     {     {
         StringRep::free(_rep);         StringRep::free(_rep);
         _rep = &StringRep::_emptyRep;         _rep = &StringRep::_emptyRep;
         _StringThrowBadUTF8((Uint32)utf8_error_index);          _StringThrowBadUTF8((Uint32)utf8_error_index,str,n);
     }     }
  
     _rep->data[_rep->size] = 0;     _rep->data[_rep->size] = 0;
Line 687 
Line 733 
     {     {
         StringRep::free(_rep);         StringRep::free(_rep);
         _rep = &StringRep::_emptyRep;         _rep = &StringRep::_emptyRep;
         _StringThrowBadUTF8((Uint32)utf8_error_index);          _StringThrowBadUTF8((Uint32)utf8_error_index,str,size);
     }     }
  
     _rep->size += tmp;     _rep->size += tmp;


Legend:
Removed from v.1.136  
changed lines
  Added in v.1.136.2.1

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2