[ http://issues.apache.org/jira/browse/XERCESC-1654?page=all ]

Alberto Massari resolved XERCESC-1654.
--------------------------------------

    Resolution: Fixed

Hi Boris,
I have changed the code to use the same computation provided by the Unicode web 
site; however, the current code is not wrong as masking with 0x3FF will in any 
case discard the bit that the (ch - 0x10000) operation changed.

> Bug in surrogate handling in internal UCS4 transcoder
> -----------------------------------------------------
>
>                 Key: XERCESC-1654
>                 URL: http://issues.apache.org/jira/browse/XERCESC-1654
>             Project: Xerces-C++
>          Issue Type: Bug
>          Components: Utilities
>    Affects Versions: 2.7.0
>         Environment: any
>            Reporter: Boris Kolpackov
>
> In util/XMLUCSTranscoder.cpp there is the following code which handles 
> surrogates (line 110):
>             const XMLCh ch1 = XMLCh(((nextVal - 0x10000) >> 10) + 0xD800);
>             const XMLCh ch2 = XMLCh(((nextVal - 0x10000) & 0x3FF) + 0xDC00);
> I believe the second line should be:
>             const XMLCh ch2 = XMLCh((nextVal & 0x3FF) + 0xDC00);
> See http://unicode.org/unicode/faq/utf_bom.html#35 for confirmation. Also, 
> while at it, I would suggest renaming XMLUCSTranscoder.cpp to 
> XMLUCST4ranscoder.cpp so that it is consistent with XMLUCS4Transcoder.hpp.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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

Reply via email to