Changeset 119
- Timestamp:
- Aug 26, 2006, 12:51:01 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/tools/qstring.cpp
r8 r119 6976 6976 UniChar *ucPtr = (UniChar *) s.unicode(); 6977 6977 size_t ucLeft = uclen; 6978 6978 6979 // be optimistic (imply that one byte is necessary per every Unicode char) 6979 6980 size_t mblen = uclen; 6980 6981 QCString mbBuf( mblen + 1 ); … … 6991 6992 size_t mbDone = mblen - mbLeft; 6992 6993 size_t ucDone = uclen - ucLeft; 6993 // assume that ucLeft/mbLeft is an approximation of ucDone/mbDone 6994 mblen = mbDone + (ucLeft * mbDone) / ucDone; 6994 size_t newLen = mblen; 6995 if ( ucDone ) { 6996 // assume that ucLeft/mbLeft is an approximation of ucDone/mbDone 6997 newLen = mbDone + (ucLeft * mbDone) / ucDone; 6998 } 6999 if ( newLen == mblen ) { 7000 // could not process a single Unicode char, double the size 7001 mblen *= 2; 7002 } else { 7003 mblen = newLen; 7004 } 6995 7005 mbBuf.resize( mblen + 1 ); 6996 7006 mbPtr = mbBuf.data() + mbDone; 7007 mbLeft = mblen - mbDone; 6997 7008 } else if ( rc != ULS_SUCCESS ) { 6998 7009 #ifndef QT_NO_DEBUG … … 7004 7015 } 7005 7016 } 7006 mbBuf [ mblen - mbLeft ] = '\0';7017 mbBuf.truncate( mblen - mbLeft ); 7007 7018 return mbBuf; 7008 7019 }
Note:
See TracChangeset
for help on using the changeset viewer.