diff options
Diffstat (limited to 'libraries/id3lib/patches/31-fix-utf16-stringlists.patch')
-rw-r--r-- | libraries/id3lib/patches/31-fix-utf16-stringlists.patch | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/libraries/id3lib/patches/31-fix-utf16-stringlists.patch b/libraries/id3lib/patches/31-fix-utf16-stringlists.patch new file mode 100644 index 0000000000..3582238743 --- /dev/null +++ b/libraries/id3lib/patches/31-fix-utf16-stringlists.patch @@ -0,0 +1,24 @@ +This patch fixes tag corruption after pipe characters. + +Author: Urs Fleisch <urs.fleisch@gmail.com> +Fixes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=680915 +--- a/src/io_helpers.cpp ++++ b/src/io_helpers.cpp +@@ -373,10 +373,17 @@ + //} + // Right code + unsigned char *pdata = (unsigned char *) data.c_str(); ++ unicode_t lastCh = BOM; + for (size_t i = 0; i < size; i += 2) + { + unicode_t ch = (pdata[i] << 8) | pdata[i+1]; ++ if (lastCh == 0 && ch != BOM) ++ { ++ // Last character was NULL, so start next string with BOM. ++ writer.writeChars((const unsigned char*) &BOM, 2); ++ } + writer.writeChars((const unsigned char*) &ch, 2); ++ lastCh = ch; + } + // End patch + } |