fx5 / usbdmx

Linux/Mac/Windows-Driver for DMX-Interfaces from Digital Enlightenment and FX5
http://www.fx5.de/
BSD 3-Clause "New" or "Revised" License
17 stars 14 forks source link

Probleme bei nicht angeschlossenem Interface #1

Closed dhenneke closed 13 years ago

dhenneke commented 13 years ago

Wenn kein Interface angeschlossen ist und dann ein Programm ausgeführt wird, hängt das Programm bei mir in einer Endlosschleife fest. Diese entsteht in der usbdmx.c in der Funktionen GetAllConnectedInterfaces(...).

Das Problem scheint in der while-Schleife, in den Zeilen 116-125, zu liegen. Diese wird ja für jedes angeschlossene HID-Device durchlaufen und die if-Abfrage überprüft dann, ob es sich um ein DMX-Interface handelt. Die Ursache der Endlosschleife liegt nun in Zeile 123. Hier wird der Pointer auf das folgende Element gesetzt. Dies geschieht aber nur, wenn es sich bei dem HID-Device um eines der besagten Interfaces handelt. Falls nun aber der Pointer auf ein anderes Device (Bsp: Maus oder Tastatur) zeigt, wird die if-Abfrage abgewiesen und nichts ausgeführt. Dadurch wird immer wieder das gleiche Gerät überprüft und die while-Schleife nie verlassen.

Lösungsvorschlag: Tauschen der Zeilen 123 und 124, sodass das cur_dev=cur_dev->next nach dem if und vor dem Schleifen-rumpf-ende ausgeführt wird.

Das gleiche Phänomenen findet sich in der Funktion GetDeviceVersion(...) in Zeile 149.

fx5 commented 13 years ago

Ja, danke! Ist mir auch grad passiert. Das ist irgendwie in den if-block gerutscht. Das Problem tritt auf, wenn andere HID-Geräte gefunden werden.