1diff -ruN id3lib-3.8.3.orig/ChangeLog id3lib-3.8.3/ChangeLog 2--- id3lib-3.8.3.orig/ChangeLog 2003-03-02 01:23:00.000000000 +0100 3+++ id3lib-3.8.3/ChangeLog 2006-02-22 00:33:59.946214472 +0100 4@@ -1,3 +1,8 @@ 5+2006-02-17 Jerome Couderc 6+ 7+ * Patch from Spoon to fix UTF-16 writing bug 8+ http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979 9+ 10 2003-03-02 Sunday 17:38 Thijmen Klok <thijmen@id3lib.org> 11 12 * THANKS (1.20): added more people 13diff -ruN id3lib-3.8.3.orig/src/io_helpers.cpp id3lib-3.8.3/src/io_helpers.cpp 14--- id3lib-3.8.3.orig/src/io_helpers.cpp 2003-03-02 01:23:00.000000000 +0100 15+++ id3lib-3.8.3/src/io_helpers.cpp 2006-02-22 00:35:02.926639992 +0100 16@@ -363,11 +363,22 @@ 17 // Write the BOM: 0xFEFF 18 unicode_t BOM = 0xFEFF; 19 writer.writeChars((const unsigned char*) &BOM, 2); 20+ // Patch from Spoon : 2004-08-25 14:17 21+ // http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979 22+ // Wrong code 23+ //for (size_t i = 0; i < size; i += 2) 24+ //{ 25+ // unicode_t ch = (data[i] << 8) | data[i+1]; 26+ // writer.writeChars((const unsigned char*) &ch, 2); 27+ //} 28+ // Right code 29+ unsigned char *pdata = (unsigned char *) data.c_str(); 30 for (size_t i = 0; i < size; i += 2) 31 { 32- unicode_t ch = (data[i] << 8) | data[i+1]; 33+ unicode_t ch = (pdata[i] << 8) | pdata[i+1]; 34 writer.writeChars((const unsigned char*) &ch, 2); 35 } 36+ // End patch 37 } 38 return writer.getCur() - beg; 39 } 40