bug im list kommando mit type präfix

Begonnen von justme1968, 10 Mai 2016, 09:05:00

Vorheriges Thema - Nächstes Thema

justme1968

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;
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Habs eingecheckt. Weisst du, welche perl-Version betroffen ist?

justme1968

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.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968