FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: justme1968 am 10 Mai 2016, 09:05:00

Titel: bug im list kommando mit type präfix
Beitrag von: justme1968 am 10 Mai 2016, 09:05:00
es gibt ein problem mit dem type prefix im list kommando das zumindest bei manchen perl versionen dafür sorgt das der prefix nur für das erste gefundene device ausgewertet wird und bei allen nachfolgen überschrieben wird.

die ursache ist das in der schleife über alle parameter scheinbar nur eine ref ins array erzeugt wird und die spätere zuweisung an $n dann nicht nur $n ändert sondern auch direkt das arg array. ab dem zweiten schleifen durchlauf ist der prefix dann verschwunden.

das lässt sich z.b. dadurch verhindern das eine lokale kopie von $n angelegt wird.


Index: fhem.pl
===================================================================
--- fhem.pl (revision 11421)
+++ fhem.pl (working copy)
@@ -2147,6 +2147,9 @@

         my $first = 1;
         foreach  my $n (@arg[1..@arg-1]) {
+          # in some? perl versions $n is only a ref to $arg[x]
+          # and is overwritten by $n = $2 below. so make a local copy first.
+          my $n = $n;
           my $fType="";
           if($n =~ m/^(.:)(.*$)/) {
             $fType = $1;
Titel: Antw:bug im list kommando mit type präfix
Beitrag von: rudolfkoenig am 10 Mai 2016, 13:07:25
Habs eingecheckt. Weisst du, welche perl-Version betroffen ist?
Titel: Antw:bug im list kommando mit type präfix
Beitrag von: justme1968 am 10 Mai 2016, 13:52:34
gestern ist es mir auf einem mac aufgefallen als ich den wiki eintrag für list ergänzt habe.

ich weiß nicht welche versionen es noch betrifft.