Movieplayer 1 und 2 / Filmarchiv
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: Movieplayer 1 und 2 / Filmarchiv
Ok, ich guck heute abend noch, ob das noch woanders ähnlich schiefgehen könnte, dann mach ich den rein. Danke fürs testen.
-
- Contributor
- Beiträge: 1509
- Registriert: Donnerstag 27. Dezember 2007, 12:59
Re: Movieplayer 1 und 2 / Filmarchiv
Fixt einen Neutrino Segfault, wenn bei leerem Filmarchiv die OK-Taste gedrückt wird.
moviebrowser.cpp.diff
moviebrowser.cpp.diff
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: Movieplayer 1 und 2 / Filmarchiv
Es gibt doch ausser "OK" und "Home" keine möglichkeit, aus dieser Loop rauszukommen (also auch kein "rescan" oder "configure" an dieser Stelle), richtig?
Wäre es da nicht offensichtlicher gleich vor der while-schleife
zu machen? Oder ist das für den unklar, warum da nichts aufgeht?
Wäre es da nicht offensichtlicher gleich vor der while-schleife
Code: Alles auswählen
bool loop = !m_vMovieInfo.empty()
-
- Tuxboxer
- Beiträge: 4332
- Registriert: Dienstag 7. Mai 2002, 17:04
Re: Movieplayer 1 und 2 / Filmarchiv
Wenn Ihr in der Ecke seit (es geht doch um den Moviebrowser?):
bei der Filmauswahl kommt eine Auswahl
"Letzter Wiedergabestop nn:nn"
"Filmanfang"
Hier wäre ein "optout" entweder über die Hometaste oder einen Menüeintrag "Abbruch" sinnvoll.
Auf "Home" läuft der gewählte Film los als wenn man OK drückt
bei der Filmauswahl kommt eine Auswahl
"Letzter Wiedergabestop nn:nn"
"Filmanfang"
Hier wäre ein "optout" entweder über die Hometaste oder einen Menüeintrag "Abbruch" sinnvoll.
Auf "Home" läuft der gewählte Film los als wenn man OK drückt
-
- Contributor
- Beiträge: 1509
- Registriert: Donnerstag 27. Dezember 2007, 12:59
Re: Movieplayer 1 und 2 / Filmarchiv
Ja, geht auch, mach's einfach rein.seife hat geschrieben:Es gibt doch ausser "OK" und "Home" keine möglichkeit, aus dieser Loop rauszukommen (also auch kein "rescan" oder "configure" an dieser Stelle), richtig?
Wäre es da nicht offensichtlicher gleich vor der while-schleife
zu machen? Oder ist das für den unklar, warum da nichts aufgeht?Code: Alles auswählen
bool loop = !m_vMovieInfo.empty()
-
- Contributor
- Beiträge: 1509
- Registriert: Donnerstag 27. Dezember 2007, 12:59
Re: Movieplayer 1 und 2 / Filmarchiv
@seife
Die andere Variante war vielleicht doch etwas eleganter. Nun blitzt das Filmarchiv kurz auf, wenn man es öffnen möchte
und nach dem ersten Hinweis, das keine Filme gefunden wurden, kommt auch kein anderer Hinweis. Das ist jetzt doch etwas
verwirrend, für den einen oder anderen. Dazu kommt noch, das es auch nicht mehr auf geht, wenn man nachträglich ein
Startverzeichnis angibt. Man kommt auch nicht mehr an die MB Einstellungen, um die Option "Filminfos neu laden bei Start"
zu aktivieren.
Dann gibt es noch ein Paint-Problem, nachdem man die Suche durchgeführt hat und danach eine andere Option auswählt.
Die andere Variante war vielleicht doch etwas eleganter. Nun blitzt das Filmarchiv kurz auf, wenn man es öffnen möchte
und nach dem ersten Hinweis, das keine Filme gefunden wurden, kommt auch kein anderer Hinweis. Das ist jetzt doch etwas
verwirrend, für den einen oder anderen. Dazu kommt noch, das es auch nicht mehr auf geht, wenn man nachträglich ein
Startverzeichnis angibt. Man kommt auch nicht mehr an die MB Einstellungen, um die Option "Filminfos neu laden bei Start"
zu aktivieren.
Dann gibt es noch ein Paint-Problem, nachdem man die Suche durchgeführt hat und danach eine andere Option auswählt.
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: Movieplayer 1 und 2 / Filmarchiv
Das hatte ich befürchtet (das das auf- und sofort wieder zugeht, ohne hinweis). Kann man in dem leeren Datei-Menü (wo OK vorher einen segfault auslöste) denn irgendwas anderes machen (Einstellungen oder so)? Dann wäre es sinnvoll, nur "OK" zu blockieren, wie du es hattest. Wenn man nichts machen kann, dann sollte man evtl zwar das Datei-Menü nicht öffnen, dafür aber ein "es wurden keine Filme gefunden, bitte $KONFIGURATION durchführen"-Popup einblenden.
Die Paint-Probleme lasse ich jemand anderem. Ich habe die Artefakte, die durch fehlbenutzung der CFBWindow-Klasse entstehen konnten, an der Wurzel bekämpft (dafür kann es jetzt sein, dass Fenster nur noch halb angezeigt werden), aber das hilft natürlich nicht gegen vergessene hide() oder ähnliches
Die Paint-Probleme lasse ich jemand anderem. Ich habe die Artefakte, die durch fehlbenutzung der CFBWindow-Klasse entstehen konnten, an der Wurzel bekämpft (dafür kann es jetzt sein, dass Fenster nur noch halb angezeigt werden), aber das hilft natürlich nicht gegen vergessene hide() oder ähnliches
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: Movieplayer 1 und 2 / Filmarchiv
Das hatte ich befürchtet (das das auf- und sofort wieder zugeht, ohne hinweis). Kann man in dem leeren Datei-Menü (wo OK vorher einen segfault auslöste) denn irgendwas anderes machen (Einstellungen oder so)? Dann wäre es sinnvoll, nur "OK" zu blockieren, wie du es hattest. Wenn man nichts machen kann, dann sollte man evtl zwar das Datei-Menü nicht öffnen, dafür aber ein "es wurden keine Filme gefunden, bitte $KONFIGURATION durchführen"-Popup einblenden.
Die Paint-Probleme lasse ich jemand anderem. Ich habe die Artefakte, die durch fehlbenutzung der CFBWindow-Klasse entstehen konnten, an der Wurzel bekämpft (dafür kann es jetzt sein, dass Fenster nur noch halb angezeigt werden), aber das hilft natürlich nicht gegen vergessene hide() oder ähnliches
Die Paint-Probleme lasse ich jemand anderem. Ich habe die Artefakte, die durch fehlbenutzung der CFBWindow-Klasse entstehen konnten, an der Wurzel bekämpft (dafür kann es jetzt sein, dass Fenster nur noch halb angezeigt werden), aber das hilft natürlich nicht gegen vergessene hide() oder ähnliches
-
- Contributor
- Beiträge: 1509
- Registriert: Donnerstag 27. Dezember 2007, 12:59
Re: Movieplayer 1 und 2 / Filmarchiv
In movieplayer2.cpp: tmpbuf steht auf 512 eingelesen werden 1024, ist das extra so programmiert?
Sonst wäre es "out-of-bounds".
Sonst wäre es "out-of-bounds".
Code: Alles auswählen
int box2box_request_stream(const char *fn)
{
char tmpbuf[512];
char id_s[33]; // long long hex == 32 char's + \0
int fd = -1;
char *ip;
char *name;
int port, vp, ap, ret;
long long id;
char *p1, *p2;
std::string url, response;
CURLcode httpres;
FILE *fp = fopen(fn, "r");
if (!fp)
return -1;
if (!fgets(tmpbuf, 1024, fp))
goto nofile;
DBG("tmpbuf: %s", tmpbuf);
if (strcmp(tmpbuf, "#DBOXSTREAM\n") != 0)
{
INFO("invalid file signature: no #DBOXSTREAM found\n");
goto nofile;
}
DBG("found #DBOXSTREAM\n");
if (!fgets(tmpbuf, 1024, fp))
goto nofile;
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: Movieplayer 1 und 2 / Filmarchiv
nö, das ist ein saftiger buffer overrun
-
- Contributor
- Beiträge: 1509
- Registriert: Donnerstag 27. Dezember 2007, 12:59
Re: Movieplayer 1 und 2 / Filmarchiv
So, wie ich das sehe wird fp mindestens 1x nicht geschlossen. Nämlich im Gutfall.
Das bedeutet ein zusätzliches "memory leak".
Das bedeutet ein zusätzliches "memory leak".
-
- Erleuchteter
- Beiträge: 625
- Registriert: Samstag 8. September 2007, 16:17
Re: Movieplayer 1 und 2 / Filmarchiv
Das sollte gehen, oder?
Wie sollte man das andere Problem angehen?
Code: Alles auswählen
Index: apps/tuxbox/neutrino/src/gui/movieplayer2.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/gui/movieplayer2.cpp,v
retrieving revision 1.65
diff -U3 -r1.65 movieplayer2.cpp
--- apps/tuxbox/neutrino/src/gui/movieplayer2.cpp 5 Dec 2009 20:19:49 -0000 1.65
+++ apps/tuxbox/neutrino/src/gui/movieplayer2.cpp 29 Dec 2009 15:40:49 -0000
@@ -539,7 +539,7 @@
returns a file descriptor to the stream or -1 */
int box2box_request_stream(const char *fn)
{
- char tmpbuf[512];
+ char tmpbuf[1024];
char id_s[33]; // long long hex == 32 char's + \0
int fd = -1;
char *ip;
-
- Contributor
- Beiträge: 1509
- Registriert: Donnerstag 27. Dezember 2007, 12:59
Re: Movieplayer 1 und 2 / Filmarchiv
Das sollte reichen.
Code: Alles auswählen
Index: apps/tuxbox/neutrino/src/gui/movieplayer2.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/gui/movieplayer2.cpp,v
retrieving revision 1.65
diff -u -p -r1.65 movieplayer2.cpp
--- a/apps/tuxbox/neutrino/src/gui/movieplayer2.cpp 5 Dec 2009 20:19:49 -0000 1.65
+++ b/apps/tuxbox/neutrino/src/gui/movieplayer2.cpp 29 Dec 2009 16:04:13 -0000
@@ -647,6 +647,7 @@ int box2box_request_stream(const char *f
g_currentapid = pida;
DBG("isstream == true, numpida: %d pida: %d, pidv: %d\n", g_numpida, pida, pidv);
}
+ fclose(fp);
return fd;
nostream:
-
- Erleuchteter
- Beiträge: 625
- Registriert: Samstag 8. September 2007, 16:17
Re: Movieplayer 1 und 2 / Filmarchiv
THX, erledigt.