|
From: <set...@us...> - 2006-04-19 18:50:52
|
Revision: 1314 Author: sethdill Date: 2006-04-19 11:50:44 -0700 (Wed, 19 Apr 2006) ViewCVS: http://svn.sourceforge.net/frontierkernel/?rev=1314&view=rev Log Message: ----------- All work in converttextencoding, mac version. - larger output buffer - better error checking - replaced 0x08000100 with the mac's SDK-supplied constant - dispose of the converter if the conversion fails for any reason Still need to hook up a better error routine. Errors result in a silent death for the calling script. Modified Paths: -------------- Frontier/trunk/Common/source/strings.c Modified: Frontier/trunk/Common/source/strings.c =================================================================== --- Frontier/trunk/Common/source/strings.c 2006-04-19 18:47:17 UTC (rev 1313) +++ Frontier/trunk/Common/source/strings.c 2006-04-19 18:50:44 UTC (rev 1314) @@ -2355,16 +2355,19 @@ TECCreateConverter (&converter, inputcharset, outputcharset); - sizeoutputbuffer = lentext * 2; + sizeoutputbuffer = lentext * 4; if (sizeoutputbuffer < 32) /*docs say use 32 minimum*/ sizeoutputbuffer = 32; - sethandlesize (hresult, sizeoutputbuffer); + if (!sethandlesize (hresult, sizeoutputbuffer)) { // out of memory + TECDisposeConverter (converter); + return (false); + } // 2005-08-26 --- kw better bytemark detecting // see http://en.wikipedia.org/wiki/Byte_Order_Mark - if (inputcharset == 0x08000100) // we handle utf-8 input + if (inputcharset == kCFStringEncodingUTF8) // we handle utf-8 input { if ( (*h) [0] == '\xEF' && (*h) [1] == '\xBB' @@ -2394,8 +2397,10 @@ status = TECConvertText (converter, (ConstTextPtr)(*h), lentext, &ctorigbytes, (TextPtr)(*hresult), sizeoutputbuffer, &ctoutputbytes); - if (status != noErr) + if (status != noErr) { + TECDisposeConverter (converter); return (false); + } TECFlushText (converter, (TextPtr)(*hresult), sizeoutputbuffer, &ctflushedbytes); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |