Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] BUG: VDR 1.3.12 crashes in replay mode -- concerning time searchmenu



Hi,

Jacek Pop?awski found this bug and here are the steps to reproduce it:

1. Replay a recording
2. Press the red key
3. Press the menu key
4. Press the menu key
5. Press any number key

I don't know if my test sequence above makes any sense but it is likely to happen if one hits the wrong remote button by mistake.

This is the backtrace:

(gdb) backtrace
#0 0x080c0196 in cReplayControl::TimeSearchDisplay (this=0x8c38690) at menu.c:3153
#1 0x080c02c8 in cReplayControl::TimeSearchProcess (this=0x8c38690, Key=k0) at menu.c:3168
#2 0x080c0aab in cReplayControl::ProcessKey (this=0x8c38690, Key=k0) at menu.c:3350
#3 0x080fb541 in main (argc=20, argv=0xbfffe1b4) at vdr.c:722
(gdb)

Here is the crashing function:

void cReplayControl::TimeSearchDisplay(void)
{
char buf[64];
strcpy(buf, tr("Jump: "));
int len = strlen(buf);
char h10 = '0' + (timeSearchTime >> 24);
char h1 = '0' + ((timeSearchTime & 0x00FF0000) >> 16);
char m10 = '0' + ((timeSearchTime & 0x0000FF00) >> 8);
char m1 = '0' + (timeSearchTime & 0x000000FF);
char ch10 = timeSearchPos > 3 ? h10 : '-';
char ch1 = timeSearchPos > 2 ? h1 : '-';
char cm10 = timeSearchPos > 1 ? m10 : '-';
char cm1 = timeSearchPos > 0 ? m1 : '-';
sprintf(buf + len, "%c%c:%c%c", ch10, ch1, cm10, cm1);
displayReplay->SetJump(buf); // <<<<<<<<<<<< this instruction fails
}

It seems that "displayReplay" is no longer valid as another OSD was shown meanwhile.

For any reason, the "menu" key doesn't go through cReplayControl::TimeSearchProcess() where the default case would set "timeSearchActive" to false.

That's why the later key press still reaches cReplayControl::TimeSearchDisplay().

Bye.
--
Dipl.-Inform. (FH) Reinhard Nissl
mailto:rnissl@gmx.de




Home | Main Index | Thread Index