diff --git a/CONTRIBUTORS b/CONTRIBUTORS index d510c4e6..f19b4610 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1461,6 +1461,8 @@ Udo Richter for reporting that the shutdown message "Recording in ... minutes, shut down anyway?" may have been given with a negative number of minutes for fixing getting the next active timer when shutting down + for reporting a problem with cPlugin::ConfigDirectory() in case a plugin calls it + from a separate thread Sven Kreiensen for his help in keeping 'channels.conf.terr' up to date diff --git a/HISTORY b/HISTORY index 5f70895f..6ba80d34 100644 --- a/HISTORY +++ b/HISTORY @@ -4859,7 +4859,7 @@ Video Disk Recorder Revision History - Fixed getting the next active timer when shutting down (thanks to Udo Richter). - Modified the cSVDRP::Close() function to avoid code duplication. -2006-08-12: Version 1.4.1-4 +2006-08-13: Version 1.4.1-4 - Fixed converting the port number in the "connect from..." log message of SVDRP (thanks to Ville Skyttä). @@ -4872,3 +4872,5 @@ Video Disk Recorder Revision History in this). - No longer stopping removing empty directories if an error occurs (thanks to Oliver Endriss). +- Added a log error message to cPlugin::ConfigDirectory() in case a plugin calls it + from a separate thread (reported by Udo Richter). diff --git a/plugin.c b/plugin.c index 82cbd692..40b44948 100644 --- a/plugin.c +++ b/plugin.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: plugin.c 1.22 2006/04/17 09:20:05 kls Exp $ + * $Id: plugin.c 1.23 2006/08/13 08:51:44 kls Exp $ */ #include "plugin.h" @@ -15,6 +15,7 @@ #include #include "config.h" #include "interface.h" +#include "thread.h" #define LIBVDR_PREFIX "libvdr-" #define SO_INDICATOR ".so." @@ -137,6 +138,8 @@ void cPlugin::SetConfigDirectory(const char *Dir) const char *cPlugin::ConfigDirectory(const char *PluginName) { static char *buffer = NULL; + if (!cThread::IsMainThread()) + esyslog("ERROR: plugin '%s' called cPlugin::ConfigDirectory(), which is not thread safe!", PluginName ? PluginName : ""); free(buffer); asprintf(&buffer, "%s/plugins%s%s", configDirectory, PluginName ? "/" : "", PluginName ? PluginName : ""); return MakeDirs(buffer, true) ? buffer : NULL;