Autor Thema: apptime crasht FHEM: argument is not a reference at ./FHEM/98_apptime.pm line 12  (Gelesen 252 mal)

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2216
Ich hab ein aktuelles FHEM und bei jedem Aufruf von "apptime" crasht mein FHEM mit folgender Meldung:
argument is not a reference at ./FHEM/98_apptime.pm line 127.

War für mich im Code nicht spontan ersichtlich, woran es liegt. Hat jemand eine Idee bzw. könnte das fixen? Danke!

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2216
Niemand eine Idee? Ich schließe daraus mal, dass das nur bei mir auftritt? Hm... seltsam...

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2216
@martinp876
Ich glaube, ich hab jetzt eine Idee, woran es liegt:

Es sind zwei Stellen im Code meiner Meinung nach problematisch. Die großen Fragen, die sich mir stellen sind: "Warum ging das jemals? (konnte nicht herausfinden, dass sich das kürzlich geändert hat)" und "Warum ist das offenbar nur bei mir ein Problem?".

Stelle 1 - Zeile 122:
  if(%prioQueues) {
-->my $nice = minNum(keys %prioQueues); <--
    my $entry = shift(@{$prioQueues{$nice}});
    delete $prioQueues{$nice} if(!@{$prioQueues{$nice}});

Die Funktion "minNum" erwartet eigentlich ein Skalar und ein Array. Hier wird nur ein Array übergeben. In der Funktion kommt dann als erster Parameter nur die Länge des Arrays an (meine Vermutung).

Habe die Zeile bei mir in das geändert:
    my $nice = minNum(19, keys %prioQueues); # 19 is highest nice factor
Stelle 2 - Zeile 132:
    ($shortarg,undef) = split(/:|;/,$shortarg,2);
"split" liefert undef zurück, falls man als Parameter einen leeren String zurück gibt. Der Code erwartet aber als Rückgabewert immer einen String. Wenn undef kommt, dann gehen spätere Konkatenationen schief.

Hab bei mir an die Zeile ein if angehängt:
    ($shortarg,undef) = split(/:|;/,$shortarg,2) if length $shortarg > 0;
Gibt bestimmt noch elegantere Wege... oder ich bin auf dem Holzweg und es gibt eine Erklärung, warum das jetzt (nur) bei mir überhaupt ein Thema ist...

Online martinp876

  • Developer
  • Hero Member
  • ****
  • Beiträge: 10544
hört sich gut an. Allerdings ist die nice ermittlung aus fhem.pl. Apptime sollte/wollte/darf diesen Code nicht ändern. Es soll ja - bis auf die Timing-Berechnung - identisch sein.

Ich baue es ein...