Merge pull request #12496 from exi/id3lib-patch

add id3lib easytag patch for proper unicode handling.

+43 -1
+4 -1
pkgs/development/libraries/id3lib/default.nix
··· 3 3 stdenv.mkDerivation { 4 4 name = "id3lib-3.8.3"; 5 5 6 - patches = [ ./id3lib-3.8.3-gcc43-1.patch ]; 6 + patches = [ 7 + ./id3lib-3.8.3-gcc43-1.patch 8 + ./patch_id3lib_3.8.3_UTF16_writing_bug.diff 9 + ]; 7 10 8 11 buildInputs = [ zlib ]; 9 12
+39
pkgs/development/libraries/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff
··· 1 + diff -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 13 + diff -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 + }