Unicode16 writing bug, in src\io_helpers.cpp
Bug Description: Some Chinese encoded utf16
characters such as '21691' which should be
written '54BB' were being written 54FF because the '|
data[i+1];
' was ORing a negative number '-69' signed instead of
unsigned '187', casting the string to unsigned char fixes
the bug.
function:
size_t io::writeUnicodeText(ID3_Writer& writer, String
data, bool bom)
right code:
unsigned char *pdata = (unsigned char *)
data.c_str();
for (size_t i = 0; i < size; i += 2)
{
unicode_t ch = (pdata[i] << 8) |
pdata[i+1];
writer.writeChars((const unsigned
char*) &ch, 2);
}
wrong code:
for (size_t i = 0; i < size; i += 2)
{
unicode_t ch = (data[i] << 8) | data
[i+1];
writer.writeChars((const unsigned
char*) &ch, 2);
}
Nobody/Anonymous
None
None
Public
|
Date: 2006-12-09 14:49 Logged In: NO |
Copyright © 2010 Geeknet, Inc. All rights reserved. Terms of Use