From 18a38c4e18da853b14a9cd3a51f8da439d955655 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Wed, 12 Aug 2009 08:08:14 +0000 Subject: [PATCH] Another rereadcfg fix git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@425 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem.pl | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/fhem.pl b/fhem.pl index 404e21ff3..808fae5d9 100755 --- a/fhem.pl +++ b/fhem.pl @@ -151,7 +151,7 @@ my %defaultattr; # Default attributes my %intAt; # Internal at timer hash. my $nextat; # Time when next timer will be triggered. my $intAtCnt=0; -my $cvsid = '$Id: fhem.pl,v 1.78 2009-08-12 08:01:49 rudolfkoenig Exp $'; +my $cvsid = '$Id: fhem.pl,v 1.79 2009-08-12 08:08:14 rudolfkoenig Exp $'; my $namedef = "where is either:\n" . "- a single device name\n" . @@ -322,9 +322,10 @@ while (1) { if(vec($rout, $selectlist{$p}{FD}, 1)); } foreach my $p (keys %readyfnlist) { - if(CallFn($readyfnlist{$p}{NAME}, "ReadyFn", $readyfnlist{$p})) { + next if(!$readyfnlist{$p}); # due to rereadcfg / delete - if($readyfnlist{$p}) { # ReadyFn may decide to delete the device + if(CallFn($readyfnlist{$p}{NAME}, "ReadyFn", $readyfnlist{$p})) { + if($readyfnlist{$p}) { # delete itself inside ReadyFn CallFn($readyfnlist{$p}{NAME}, "ReadFn", $readyfnlist{$p}); } @@ -1129,10 +1130,12 @@ CommandDelete($$) # Delete releated hashes foreach my $p (keys %selectlist) { - delete $selectlist{$p} if($selectlist{$p}{NAME} eq $sdev); + delete $selectlist{$p} + if($selectlist{$p} && $selectlist{$p}{NAME} eq $sdev); } foreach my $p (keys %readyfnlist) { - delete $readyfnlist{$p} if($readyfnlist{$p}{NAME} eq $sdev); + delete $readyfnlist{$p} + if($readyfnlist{$p} && $readyfnlist{$p}{NAME} eq $sdev); } delete($attr{$sdev});