summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS2
-rw-r--r--HISTORY7
-rw-r--r--tools.h16
3 files changed, 16 insertions, 9 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 00f79ee8..20c8eb68 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -2835,6 +2835,8 @@ Johann Friedrichs <johann.friedrichs@web.de>
respective recording did not exist
for fixing a double deletion of a cTimer in case HandleRemoteModifications() returned
false
+ for reporting an invalid lock sequence in the epgsearch plugin, which turned out to
+ be an abandoned member of class cSchedulesLock
Timo Helkio <timolavi@mbnet.fi>
for reporting a hangup when replaying a TS recording with subtitles activated
diff --git a/HISTORY b/HISTORY
index 462cb247..150ae394 100644
--- a/HISTORY
+++ b/HISTORY
@@ -9103,7 +9103,7 @@ Video Disk Recorder Revision History
- Fixed the locking sequence when switching between 'Now', 'Next' and 'Schedule'
in the Schedules menu.
-2017-06-10: Version 2.3.7
+2017-06-11: Version 2.3.7
- Fixed false positives when checking the locking sequence, in case of nested locks
within the same thread.
@@ -9121,3 +9121,8 @@ Video Disk Recorder Revision History
Martin Wache).
- The "Channels" menu now indicates whether a channel is encrypted ('X') or a radio
channel ('R') (thanks to Martin Wache).
+- Changed ##Lock to ##_Lock in the DEF_LIST_LOCK and USE_LIST_LOCK macros defined
+ in tools.h, so that there is no cSchedulesLock any more. The epgsearch plugin still
+ had an abandoned member of class cSchedulesLock, which, as a side effect, caused an
+ invalid lock sequence to be flagged (reported by Johann Friedrichs). In order to
+ have the compiler report such things, these macros have been changed.
diff --git a/tools.h b/tools.h
index 6ff70318..cc4b2b66 100644
--- a/tools.h
+++ b/tools.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: tools.h 4.10 2017/05/22 20:21:08 kls Exp $
+ * $Id: tools.h 4.11 2017/06/11 08:52:06 kls Exp $
*/
#ifndef __TOOLS_H
@@ -614,19 +614,19 @@ public:
// is left:
#define DEF_LIST_LOCK2(Class, Name) \
-class c##Name##Lock { \
+class c##Name##_Lock { \
private: \
cStateKey stateKey; \
const c##Class *list; \
public: \
- c##Name##Lock(bool Write = false) \
+ c##Name##_Lock(bool Write = false) \
{ \
if (Write) \
list = c##Class::Get##Name##Write(stateKey); \
else \
list = c##Class::Get##Name##Read(stateKey); \
} \
- ~c##Name##Lock() { if (list) stateKey.Remove(); } \
+ ~c##Name##_Lock() { if (list) stateKey.Remove(); } \
const c##Class *Name(void) const { return list; } \
c##Class *Name(void) { return const_cast<c##Class *>(list); } \
}
@@ -636,13 +636,13 @@ public: \
// a suitable DEF_LIST_LOCK, and also a pointer to the provided list:
#define USE_LIST_LOCK_READ2(Class, Name) \
-c##Name##Lock Name##Lock(false); \
-const c##Class *Name __attribute__((unused)) = Name##Lock.Name();
+c##Name##_Lock Name##_Lock(false); \
+const c##Class *Name __attribute__((unused)) = Name##_Lock.Name();
#define USE_LIST_LOCK_READ(Class) USE_LIST_LOCK_READ2(Class, Class)
#define USE_LIST_LOCK_WRITE2(Class, Name) \
-c##Name##Lock Name##Lock(true); \
-c##Class *Name __attribute__((unused)) = Name##Lock.Name();
+c##Name##_Lock Name##_Lock(true); \
+c##Class *Name __attribute__((unused)) = Name##_Lock.Name();
#define USE_LIST_LOCK_WRITE(Class) USE_LIST_LOCK_WRITE2(Class, Class)
template<class T> class cVector {