Fixed cMarks::GetNextBegin() and cMarks::GetNextEnd()

This commit is contained in:
Klaus Schmidinger 2015-02-05 14:24:35 +01:00
parent f60d90aeb6
commit ad45f801d5
2 changed files with 7 additions and 3 deletions

View File

@ -8502,3 +8502,7 @@ Video Disk Recorder Revision History
on a suggestion by Thomas Reufer).
- Updated sources.conf to reflect the fact that Astra 4A and SES5 are actually in
two separate positions (thanks to Arthur Konovalov).
- Fixed cMarks::GetNextBegin() and cMarks::GetNextEnd(). The behavior of these two
functions is now exacly as described in the header file. Editing marks that are
placed at exactly the same offset in a recording are now preserved in the cutting
process.

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: recording.c 3.24 2015/01/25 15:39:24 kls Exp $
* $Id: recording.c 3.25 2015/02/05 13:50:39 kls Exp $
*/
#include "recording.h"
@ -2169,7 +2169,7 @@ cMark *cMarks::GetNext(int Position)
cMark *cMarks::GetNextBegin(cMark *EndMark)
{
cMark *BeginMark = EndMark ? Next(EndMark) : First();
if (BeginMark) {
if (BeginMark && EndMark && BeginMark->Position() == EndMark->Position()) {
while (cMark *NextMark = Next(BeginMark)) {
if (BeginMark->Position() == NextMark->Position()) { // skip Begin/End at the same position
if (!(BeginMark = Next(NextMark)))
@ -2187,7 +2187,7 @@ cMark *cMarks::GetNextEnd(cMark *BeginMark)
if (!BeginMark)
return NULL;
cMark *EndMark = Next(BeginMark);
if (EndMark) {
if (EndMark && BeginMark && BeginMark->Position() == EndMark->Position()) {
while (cMark *NextMark = Next(EndMark)) {
if (EndMark->Position() == NextMark->Position()) { // skip End/Begin at the same position
if (!(EndMark = Next(NextMark)))