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 * 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; }