Another rereadcfg fix

git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@425 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig
2009-08-12 08:08:14 +00:00
parent 739961d0b6
commit 18a38c4e18

13
fhem.pl
View File

@@ -151,7 +151,7 @@ my %defaultattr; # Default attributes
my %intAt; # Internal at timer hash. my %intAt; # Internal at timer hash.
my $nextat; # Time when next timer will be triggered. my $nextat; # Time when next timer will be triggered.
my $intAtCnt=0; 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 = my $namedef =
"where <name> is either:\n" . "where <name> is either:\n" .
"- a single device name\n" . "- a single device name\n" .
@@ -322,9 +322,10 @@ while (1) {
if(vec($rout, $selectlist{$p}{FD}, 1)); if(vec($rout, $selectlist{$p}{FD}, 1));
} }
foreach my $p (keys %readyfnlist) { 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}); CallFn($readyfnlist{$p}{NAME}, "ReadFn", $readyfnlist{$p});
} }
@@ -1129,10 +1130,12 @@ CommandDelete($$)
# Delete releated hashes # Delete releated hashes
foreach my $p (keys %selectlist) { 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) { 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}); delete($attr{$sdev});