Crash on first start without setup.conf

Message ID 201112101731.pBAHVvRq077463@triton8.kn-bremen.de
State New
Headers

Commit Message

Juergen Lock Dec. 10, 2011, 5:31 p.m. UTC
  In article <4EE366F8.2030104@tvdr.de> you write:
>On 09.12.2011 19:15, Juergen Lock wrote:
>> Hi!
>>
>>   (I'm still on 1.7.19 so forgive me if this already has been solved...)
>
>I forgive you ;-)
>
>Actually it has been fixed in version 1.7.20, with an additional
>fix in 1.7.21.

Thanx! :)

 This is the patch I merged into FreeBSD ports for now until I get
around to updating to 1.7.22:


 That seems to fix the problem for me.

 Cheers,
	Juergen
  

Patch

--- config.c.orig
+++ config.c
@@ -399,7 +399,7 @@  cSetup::cSetup(void)
   CurrentChannel = -1;
   CurrentVolume = MAXVOLUME;
   CurrentDolby = 0;
-  // InitialChannel is initialized by constructor
+  InitialChannel = "";
   InitialVolume = -1;
   ChannelsWrap = 0;
   EmergencyExit = 1;
--- vdr.c.orig
+++ vdr.c
@@ -735,12 +723,14 @@  int main(int argc, char *argv[])
 
   if (!cDevice::WaitForAllDevicesReady(DEVICEREADYTIMEOUT))
      dsyslog("not all devices ready after %d seconds", DEVICEREADYTIMEOUT);
-  if (isnumber(Setup.InitialChannel)) { // for compatibility with old setup.conf files
-     if (cChannel *Channel = Channels.GetByNumber(atoi(Setup.InitialChannel)))
-        Setup.InitialChannel = Channel->GetChannelID().ToString();
+  if (*Setup.InitialChannel) {
+     if (isnumber(Setup.InitialChannel)) { // for compatibility with old setup.conf files
+        if (cChannel *Channel = Channels.GetByNumber(atoi(Setup.InitialChannel)))
+           Setup.InitialChannel = Channel->GetChannelID().ToString();
+        }
+     if (cChannel *Channel = Channels.GetByChannelID(tChannelID::FromString(Setup.InitialChannel)))
+        Setup.CurrentChannel = Channel->Number();
      }
-  if (cChannel *Channel = Channels.GetByChannelID(tChannelID::FromString(Setup.InitialChannel)))
-     Setup.CurrentChannel = Channel->Number();
   if (Setup.InitialVolume >= 0)
      Setup.CurrentVolume = Setup.InitialVolume;
   Channels.SwitchTo(Setup.CurrentChannel);