| Patch from 'Spoon' to fix issues with writing certain unicode characters |
| --- a/ChangeLog |
| +++ b/ChangeLog |
| @@ -1,3 +1,8 @@ |
| +2006-02-17 Jerome Couderc |
| + |
| + * Patch from Spoon to fix UTF-16 writing bug |
| + http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979 |
| + |
| 2003-03-02 Sunday 17:38 Thijmen Klok <thijmen@id3lib.org> |
| |
| * THANKS (1.20): added more people |
| --- a/src/io_helpers.cpp |
| +++ b/src/io_helpers.cpp |
| @@ -363,11 +363,22 @@ |
| // Write the BOM: 0xFEFF |
| unicode_t BOM = 0xFEFF; |
| writer.writeChars((const unsigned char*) &BOM, 2); |
| + // Patch from Spoon : 2004-08-25 14:17 |
| + // http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979 |
| + // 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); |
| + //} |
| + // Right code |
| + unsigned char *pdata = (unsigned char *) data.c_str(); |
| for (size_t i = 0; i < size; i += 2) |
| { |
| - unicode_t ch = (data[i] << 8) | data[i+1]; |
| + unicode_t ch = (pdata[i] << 8) | pdata[i+1]; |
| writer.writeChars((const unsigned char*) &ch, 2); |
| } |
| + // End patch |
| } |
| return writer.getCur() - beg; |
| } |