From 13702468029c482d6f177bf781ab590217dc66ea Mon Sep 17 00:00:00 2001 From: Alberto Massari <amassari@apache.org> Date: Fri, 23 Jul 2004 21:16:07 +0000 Subject: [PATCH] calcRequiredSize assumed all the characters were of the same size (jira#1142) - Patch by Anders Hybertz git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@175969 13f79535-47bb-0310-9956-ffa450edef68 --- .../Transcoders/Iconv/IconvTransService.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp b/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp index 588d2b8fe..b52bb8f7e 100644 --- a/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp +++ b/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp @@ -261,15 +261,16 @@ unsigned int IconvLCPTranscoder::calcRequiredSize(const char* const srcText 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; } -- GitLab