diff options
| author | Klaus Schmidinger <vdr@tvdr.de> | 2020-12-13 10:56:36 +0100 | 
|---|---|---|
| committer | Klaus Schmidinger <vdr@tvdr.de> | 2020-12-13 10:56:36 +0100 | 
| commit | 67a4ba4228d878fe7f5484ab8d80178ca51ce6e6 (patch) | |
| tree | d0a7c3c74b557f4f93ff12ad78d0bed32f585939 | |
| parent | 79a3607d0c220797ebf9449dd2d49221e2761fda (diff) | |
| download | vdr-67a4ba4228d878fe7f5484ab8d80178ca51ce6e6.tar.gz vdr-67a4ba4228d878fe7f5484ab8d80178ca51ce6e6.tar.bz2 | |
Fixed error handling when loading a plugin
| -rw-r--r-- | CONTRIBUTORS | 1 | ||||
| -rw-r--r-- | HISTORY | 3 | ||||
| -rw-r--r-- | plugin.c | 9 | 
3 files changed, 9 insertions, 4 deletions
| diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 1c1602f8..3606271d 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2523,6 +2523,7 @@ Nino Gerbino <ngerb@interfree.it>  Markus Ehrnsperger <markus.ehrnsperger@googlemail.com>   for reporting a problem with missing 'INCLUDES += -I$(DVBDIR)/include' in an existing   Make.config + for reporting a bug in error handling when loading a plugin  Werner Färber <w.faerber@gmx.de>   for reporting a bug in handling the cPluginManager::Active() result when pressing @@ -9536,7 +9536,7 @@ Video Disk Recorder Revision History    cDvbTuner::GetSignalStats() to avoid problems with drivers that don't do this    (thanks to Helmut Binder). -2020-12-12: +2020-12-13:  - Fixed multiple recording entries in case a recording is started during the initial    reading of the video directory (reported by Claus Muus). @@ -9555,3 +9555,4 @@ Video Disk Recorder Revision History    Binder).  - Avoiding a lengthy lock on the Channels list when starting a recording (thanks to    Helmut Binder). +- Fixed error handling when loading a plugin (reported by Markus Ehrnsperger). @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: plugin.c 4.2 2020/06/29 09:29:06 kls Exp $ + * $Id: plugin.c 4.3 2020/12/13 10:56:36 kls Exp $   */  #include "plugin.h" @@ -229,9 +229,12 @@ bool cDll::Load(bool Log)    if (!error) {       typedef cPlugin *create_t(void);       create_t *create = (create_t *)dlsym(handle, "VDRPluginCreator"); -     if (!(error = dlerror())) +     error = dlerror(); +     if (!error && create) {          plugin = create(); -     destroy = (destroy_t *)dlsym(handle, "VDRPluginDestroyer"); +        destroy = (destroy_t *)dlsym(handle, "VDRPluginDestroyer"); +        error = dlerror(); +        }       }    if (!error) {       if (plugin && args) { | 
