Schrolli91 / BOSWatch

Python Script to process input data from rtl_fm and multimon-NG - multiple Plugin support
https://bwcc.boswatch.de
GNU General Public License v2.0
132 stars 60 forks source link

Call-by-reference bei Plugin Aufruf (Async-Mode) #375

Closed Schrolli91 closed 5 years ago

Schrolli91 commented 6 years ago

https://github.com/Schrolli91/BOSWatch/blob/56f62c33e1d9e23593491e297e09f226acd9f836/includes/alarmHandler.py#L43

Es wird das Plugin in einem neuen Thread gestartet. Wie es aussieht werden die Variablen aber direkt übergeben, was in Python meines Wissens nach ein call-by-reference. Sprich, wenn der nächste Alarm reinkommt, dass Plugin aber nicht fertig ist, kann es wohl passieren, das sich der Inhalt der Variablen zur Laufzeit des Plugins ändert.

Lösung: Die Variablen sollten beim Übergeben an die Plugins KOPIERT werden, statt auf die Original Referenz zu verweisen. Am besten sowohl beim async, als auch beim normalen.

https://boswatch.de/index.php?thread/75-einfluss-von-time-sleep-in-plugins-auf-die-ausf%C3%BChrung-von-boswatch/&postID=533#post533