amassari    2004/07/23 14:16:07

  Modified:    c/src/xercesc/util/Transcoders/Iconv IconvTransService.cpp
  Log:
  calcRequiredSize assumed all the characters were of the same size (jira#1142) - 
Patch by Anders Hybertz
  
  Revision  Changes    Path
  1.16      +11 -10    
xml-xerces/c/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
  
  Index: IconvTransService.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- IconvTransService.cpp     5 Feb 2004 18:08:38 -0000       1.15
  +++ IconvTransService.cpp     23 Jul 2004 21:16:07 -0000      1.16
  @@ -261,15 +261,16 @@
       if (!srcText)
           return 0;
   
  -    unsigned charLen = ::mblen(srcText, MB_CUR_MAX);
  -    if (charLen == -1)
  -        return 0;
  -    else if (charLen != 0)
  -        charLen = strlen(srcText)/charLen;
  -
  -    if (charLen == -1)
  -        return 0;
  -    return charLen;
  +    unsigned int len=0;
  +    unsigned int size=strlen(srcText);
  +    for( unsigned int i = 0; i < size; ++len )
  +    {
  +        unsigned int retVal=::mblen( &srcText[i], MB_CUR_MAX );
  +        if( -1 == retVal ) 
  +            return 0;
  +        i += retVal;
  +    }
  +    return len;
   }
   
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to