From 43aee53e3e20d1f94278f7a6cc47b8d194578ae8 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Wed, 12 Oct 2016 12:33:42 +0200 Subject: [PATCH 1/2] Workaround for segfault in Track::writeTo function --- lib/dtscmeta.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/dtscmeta.cpp b/lib/dtscmeta.cpp index c08d088c..0f060ac9 100644 --- a/lib/dtscmeta.cpp +++ b/lib/dtscmeta.cpp @@ -1587,8 +1587,8 @@ namespace DTSC { writePointer(p, "\340", 1);//Begin track object writePointer(p, "\000\011fragments\002", 12); writePointer(p, convertInt(fragments.size() * PACKED_FRAGMENT_SIZE), 4); - for (std::deque::iterator it = fragments.begin(); it != fragments.end(); it++) { - writePointer(p, it->getData(), PACKED_FRAGMENT_SIZE); + for (; firstFrag != fragments.end(); ++firstFrag) { + writePointer(p, firstFrag->getData(), PACKED_FRAGMENT_SIZE); } writePointer(p, "\000\004keys\002", 7); writePointer(p, convertInt(keys.size() * PACKED_KEY_SIZE), 4); From 567759ce26066afd3223e69604d5c076b0a21ddd Mon Sep 17 00:00:00 2001 From: Thulinma Date: Wed, 12 Oct 2016 13:11:30 +0200 Subject: [PATCH 2/2] Fixed segfault in buffer removeKey call --- lib/dtscmeta.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dtscmeta.cpp b/lib/dtscmeta.cpp index 0f060ac9..c4a5bff2 100644 --- a/lib/dtscmeta.cpp +++ b/lib/dtscmeta.cpp @@ -1204,7 +1204,7 @@ namespace DTSC { //update firstms firstms = keys[0].getTime(); //delete any fragments no longer fully buffered - while (fragments[0].getNumber() < keys[0].getNumber()) { + while (fragments.size() && keys.size() && fragments[0].getNumber() < keys[0].getNumber()) { fragments.pop_front(); fragInsertTime.pop_front(); //and update the missed fragment counter