summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY3
-rw-r--r--menu.c16
-rw-r--r--recording.c19
3 files changed, 23 insertions, 15 deletions
diff --git a/HISTORY b/HISTORY
index 9fdf195..361c5d2 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,7 +1,7 @@
VDR Plugin 'duplicates' Revision History
----------------------------------------
-2018-09-05: Version 0.2.2
+2018-09-06: Version 0.2.2
- Updated kNone handling in main menu.
- Improved duplicate recording copy constructor.
@@ -9,6 +9,7 @@ VDR Plugin 'duplicates' Revision History
- Simplified toggle hidden.
- Fixed recordings locking sequence.
- Check for vanished recorgins in info menu.
+- Added checks for empty lists.
2018-08-30: Version 0.2.1
diff --git a/menu.c b/menu.c
index 5fd9dfe..5ef07ef 100644
--- a/menu.c
+++ b/menu.c
@@ -197,12 +197,16 @@ void cMenuDuplicates::Set(bool Refresh) {
Clear();
cMutexLock MutexLock(&DuplicateRecordings.mutex);
for (cDuplicateRecording *Duplicates = DuplicateRecordings.First(); Duplicates; Duplicates = DuplicateRecordings.Next(Duplicates)) {
- Add(SeparatorItem(Duplicates->Text()));
- for (cDuplicateRecording *Duplicate = Duplicates->Duplicates()->First(); Duplicate; Duplicate = Duplicates->Duplicates()->Next(Duplicate)) {
- cMenuDuplicateItem *Item = new cMenuDuplicateItem(Duplicate);
- Add(Item);
- if (CurrentRecording && strcmp(CurrentRecording, Item->FileName()) == 0)
- SetCurrent(Item);
+ if (Duplicates) {
+ Add(SeparatorItem(Duplicates->Text()));
+ for (cDuplicateRecording *Duplicate = Duplicates->Duplicates()->First(); Duplicate; Duplicate = Duplicates->Duplicates()->Next(Duplicate)) {
+ if (Duplicate) {
+ cMenuDuplicateItem *Item = new cMenuDuplicateItem(Duplicate);
+ Add(Item);
+ if (CurrentRecording && strcmp(CurrentRecording, Item->FileName()) == 0)
+ SetCurrent(Item);
+ }
+ }
}
}
if (Count() == 0)
diff --git a/recording.c b/recording.c
index da1b624..934217d 100644
--- a/recording.c
+++ b/recording.c
@@ -60,7 +60,8 @@ cDuplicateRecording::cDuplicateRecording(const cDuplicateRecording &DuplicateRec
if (DuplicateRecording.duplicates != NULL) {
duplicates = new cList<cDuplicateRecording>;
for (const cDuplicateRecording *duplicate = DuplicateRecording.duplicates->First(); duplicate; duplicate = DuplicateRecording.duplicates->Next(duplicate)) {
- duplicates->Add(new cDuplicateRecording(*duplicate));
+ if (duplicate)
+ duplicates->Add(new cDuplicateRecording(*duplicate));
}
} else
duplicates = NULL;
@@ -116,23 +117,25 @@ void cDuplicateRecordings::Update(void) {
Recordings.Sort();
for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) {
#endif
- cDuplicateRecording *Item = new cDuplicateRecording(recording);
- if (Item->HasDescription())
- recordings.Add(Item);
- else if (dc.hidden || Item->Visibility().Read() != HIDDEN)
- descriptionless->Duplicates()->Add(Item);
+ if (recording) {
+ cDuplicateRecording *Item = new cDuplicateRecording(recording);
+ if (Item->HasDescription())
+ recordings.Add(Item);
+ else if (dc.hidden || Item->Visibility().Read() != HIDDEN)
+ descriptionless->Duplicates()->Add(Item);
+ }
}
#if VDRVERSNUM >= 20301
recordingsStateKey.Remove(false); // sorting doesn't count as a real modification
#endif
}
for (cDuplicateRecording *recording = recordings.First(); recording; recording = recordings.Next(recording)) {
- if (!recording->Checked()) {
+ if (recording && !recording->Checked()) {
recording->SetChecked();
cDuplicateRecording *duplicates = new cDuplicateRecording();
duplicates->Duplicates()->Add(new cDuplicateRecording(*recording));
for (cDuplicateRecording *compare = recordings.First(); compare; compare = recordings.Next(compare)) {
- if (!compare->Checked()) {
+ if (compare && !compare->Checked()) {
#ifdef DEBUG_VISIBILITY
isDuplicateCount++;
#endif