From b5eba84788052d1bdac4a585bc30b97ed1906c1f Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 21 Jun 2018 23:02:39 +0100 Subject: Fix corruption of UTF16 subtitle files. --- src/lib/text_subtitle.cc | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/lib') diff --git a/src/lib/text_subtitle.cc b/src/lib/text_subtitle.cc index a3c3975e4..972e74b66 100644 --- a/src/lib/text_subtitle.cc +++ b/src/lib/text_subtitle.cc @@ -43,13 +43,6 @@ TextSubtitle::TextSubtitle (shared_ptr content) { Data in (content->path (0)); - /* Fix OS X line endings */ - for (int i = 0; i < in.size(); ++i) { - if (in.data()[i] == '\r' && ((i == in.size() - 1) || in.data()[i + 1] != '\n')) { - in.data()[i] = '\n'; - } - } - UErrorCode status = U_ZERO_ERROR; UCharsetDetector* detector = ucsdet_open (&status); ucsdet_setText (detector, reinterpret_cast (in.data().get()), in.size(), &status); @@ -71,6 +64,14 @@ TextSubtitle::TextSubtitle (shared_ptr content) scoped_array utf8 (new char[utf16_len * 2]); ucnv_fromUChars (to_utf8, utf8.get(), utf16_len * 2, reinterpret_cast(utf16.get()), utf16_len, &status); + /* Fix OS X line endings */ + size_t utf8_len = strlen (utf8.get ()); + for (size_t i = 0; i < utf8_len; ++i) { + if (utf8[i] == '\r' && ((i == utf8_len - 1) || utf8[i + 1] != '\n')) { + utf8[i] = '\n'; + } + } + ucsdet_close (detector); ucnv_close (to_utf16); ucnv_close (to_utf8); -- cgit v1.2.3