[vdr] [ANNOUNCE] patch: search repeating epg-entry

  • Erst mal ist die Idee einfach super! Danke für den Patch!
    Und weil ich etwas pedantisch bin: Warum wurde das nicht als Plugin realisiert?


    Ich habe inzwischen ca. 10 Patches die ich immer wieder über meinen VDR jage...langsam wird das manuelle patchen angelichen stressig...und spätestens bei der vdr 1.3 gehe ich davon aus, dass viele Patches nicht mehr einfach mit ein paar manuellen eingriffen einzufügen sind...


    Frank


    Und nochmal, um das klar zus stellen: DANKE für den patch, ich will nicht undankbar erscheinen und finde die Idee mit dem suchpatch klasse!!!

    AMD E4050, Debian testing/unstable, TT S-1401 + TT S2-3200 (ein Kabel LNB-Shared), VDR1.7.xx+Extensions-patch und so ziemlich jedem Plugin, das es auf der Welt gibt...

  • Das wird immer eigenartiger.
    Der Fehler liegt eindeutiger in der Datei eit.c in meiner Funktion GetEventByTitle.


    Dort liegt der Fehler in der 2. for-Schleife, da die erste durch die if(Start) übersprungen wird.
    Anscheinend wird dort dann auf einen nicht gültigen Pointer zugegriffen.
    Entweder die Liste Events hat einen Fehler, oder ich muss dort noch eine Abfrage einbauen, ob der Pointer gültig ist.
    In der Funktion GetEventAround wurde das aber von Klaus genauso programmiert.
    Vielleicht habe ich auch einen blinden Fleck.


    Das habe ich nun getan, könnte das bitte jemand ausprobieren und mir den output schicken? Achtung das File wird nun ganz schön groß.


    Bisher hatte ich keinen einzigen Absturz.


    Danke für die Hilfe!
    lg, Gerhard

  • Das ist deshalb kein plugin, weil ich nicht weiß, wie ich das gerade selektierte Item in der Liste bekommen kann.
    Ansonsten müsste ich einen kompletten epg-Viewer schreiben und das ist mir momentan zu viel Arbeit ;)


    Weiß jemand wie man das aktuell selektierte item in einer liste beim Aufruf eines plugins bekommen kann?


    Obwohl der Fehler bei egal auch ziemlich nervt.


    lg, Gerhard

  • Zitat

    Original von gestein
    Obwohl der Fehler bei egal auch ziemlich nervt.


    'tschuldigung :D


    Korrektur in Patch, Zeile 4 (Patch malformed):

    Zitat

    @@ -708,6 +708,45 @@


    muss heißen:

    Zitat

    @@ -708,6 +708,46 @@


    Bezgl. Logfile, reicht der letzte Aufruf vor Absturz ?

  • Was ist das nun wieder? patch malformed?
    Hat der patch trotzdem funktioniert?


    Ja, der letzte Aufruf vor dem Absturz sollte reichen.
    Wie ich dem entnehme, hat sich am Grundproblem nichts geändert?


    Danke für Deine Hilfe!
    lg, Gerhard


    p.s.: Bist ja nicht Du der nervt, sondern der Fehler ;)
    Ohne Deine Hilfe könnte ich eh nichts tun.

  • Zitat

    Original von gestein
    Was ist das nun wieder? patch malformed?
    Hat der patch trotzdem funktioniert?


    keine Ahnung, hab durch Nachzählen der zus. Zeilen die Diff. entdeckt, mit o.a. Änderung funzt der Patch


    Zitat


    Ja, der letzte Aufruf vor dem Absturz sollte reichen.
    Wie ich dem entnehme, hat sich am Grundproblem nichts geändert?


    leider nein


    Zitat


    p.s.: Bist ja nicht Du der nervt, sondern der Fehler ;)


    schon klar (sollte der Smiley eigentl. ausdrücken)


    Hier das Log:

  • Hallo Uwe,


    jetzt gibt's mehrere Möglichkeiten.


    1. der erste Eintrag in der Event-DB für einen bestimmten Sender ist wirklich kaputt. Was soll ich dann machen?
    2. Der Eintrag hat keinen Titel (als Titel kommt NULL zurück).
    Was macht dann eigentlich strcasecmp wenn man aufruft strcasecmp("x", NULL)? Gibt's dann einen Absturz?
    3. Der Eintrag hat einen Titel und der ist Mist. ???


    Ich tippe eher auf 2.
    Daher habe ich meinen Code umgeändert und frage zuerst die Zeit ab und dann noch, ob GetTitle nicht doch NULL liefert.
    Wenn's nun wieder einen Absturz gibt, bin ich mit meinem Latein am Ende und ziehe den patch zurück.


    Könntest Du bitte noch einmal den Patch ausprobieren?
    Ich weiß, ich bin lästig.
    Danke noch mal.


    lg, Gerhard


    p.s.: Hast Du schon mal meinen Code angesehen?
    Was hälst Du davon?

  • Nur mal als Hinweis für die Fehlersuche:


    mit "gdb" kann man so etwas leichter finden.
    Im source verzeichniss
    "gdb vdr"
    eingeben
    wenn gdb alle symbol Tabellen geladen hat.
    mit
    "run"
    den vdr starten. Jetzt sollte der vdr ganz normal laufen.
    Noch einfacher geht es wenn der vdr schon läuft und man mit
    "gdb <vdr-pid>"
    startet. Wenn der gdb dann alle symbol Tabellen geladen hat mit
    "cont"
    den vdr weiterlaufen lassen.


    Wenn es dann knallt "where" eintippen.


    Dann hat man schon mal die genaue stelle im source-Code. Dann kann man noch mit ""print variable" sich die Programmvariablen ansehen. ( und somit sofort feststellen wenn ein pointer in den Wald zeigt)


    Vielleicht hilft es ja jemanden, sollte ich erfahrene Programmiere ansprechen mögen sie mir diesen "Grundkurs" verzeihen.



    Schönen Gruß
    Peter

  • Hallo Peter,


    danke für den Hinweis.
    Ich bin eigentlich ein "erfahrener" Programmierer, komme aber aus der Windowswelt und habe einfach keine Zeit mir unter Linux wieder alles auf einmal reinzusaugen.
    Erzeugt man mit make im vdr-Verzeichnis auch schon die Symbol-Tabellen?


    Das werde ich gleich mal ausprobieren.


    Danke noch mal.


    lg, Gerhard

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!