vdr 2.1.2 segfaults in libc using vdr --genindex

Message ID 52BAC25F.5090202@tvdr.de
State New
Headers

Commit Message

Klaus Schmidinger Dec. 25, 2013, 11:32 a.m. UTC
  On 02.12.2013 20:31, Lou wrote:
> Am 02.12.2013, 17:59 Uhr, schrieb Klaus Schmidinger <Klaus.Schmidinger@tvdr.de>:
>
>>>
>>> I guess this was caused by the changes to videodir.[ch].
>>> For a quick fix you could try moving the line
>>>
>>>    cVideoDirectory::SetName(VideoDirectory);
>>>
>>> into the
>>>
>>>            case 'v': VideoDirectory = optarg;
>>>                      while (optarg && *optarg && optarg[strlen(optarg) - 1] == '/')
>>>                            optarg[strlen(optarg) - 1] = 0;
>>>                      cVideoDirectory::SetName(VideoDirectory); // <----- here!
>>>                      break;
>>>
>>> in vdr.c
>>
>> Oh, and use the option '-v'...
>> This is just a quick hack - I'll need to give this more thought.
>>
>> Klaus
>
> Thanks Klaus, this fixes things temporarily, but I agree it's annoying to set --video as well. Especially since you also have to remember setting --video first, THEN call --genindex. If you have it the wrong way around, it will segfault again ...

This should do it:

-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------

I'll need your full name if you want to be listed in the HISTORY/CONTRIBUTORS files.

Klaus
  

Patch

--- vdr.c       2013/12/25 11:01:28     3.6
+++ vdr.c       2013/12/25 11:24:26
@@ -223,6 +223,7 @@ 
    VdrUser = VDR_USER;
  #endif

+  cVideoDirectory::SetName(VideoDirectory);
    cPluginManager PluginManager(DEFAULTPLUGINDIR);

    static struct option long_options[] = {
@@ -443,6 +444,7 @@ 
            case 'v': VideoDirectory = optarg;
                      while (optarg && *optarg && optarg[strlen(optarg) - 1] == '/')
                            optarg[strlen(optarg) - 1] = 0;
+                    cVideoDirectory::SetName(VideoDirectory);
                      break;
            case 'w': if (isnumber(optarg)) {
                         int t = atoi(optarg);
@@ -663,7 +665,6 @@ 

    // Directories:

-  cVideoDirectory::SetName(VideoDirectory);
    if (!ConfigDirectory)
       ConfigDirectory = DEFAULTCONFDIR;
    cPlugin::SetConfigDirectory(ConfigDirectory);