valid summary.vdr file hangs vdr.
Commit Message
Klaus Schmidinger wrote:
...
>> Of course my point is that VDR should never hang when
>> reading a file that it has created itself.
>> Would you like me to create a patch this weekend that
>> fixes this?
>
> Very well. And don't forget to adjust summary2info.pl as well.
I am sorry, I do not know perl.
I went straight to Python in my evolution. ;-)
Anyway, as promised, here is the patch that does not only
prevent VDR from hanging/crashing (*), but also displays
summaries that do not have a short text correctly.
Carsten.
(*) During my tests today, vdr crashed with these messages:
Sep 4 13:34:08 vdr kernel: dvb-ttpci: warning: timeout waiting in BlitBitmap: 0, 1
Sep 4 13:34:10 vdr kernel: dvb-ttpci: __av7110_send_fw_cmd(): timeout waiting for COMMAND idle
Sep 4 13:34:10 vdr kernel: dvb-ttpci: av7110_send_fw_cmd(): av7110_send_fw_cmd error -110
Sep 4 13:34:10 vdr kernel: dvb-ttpci: av7110_fw_cmd error -110
Sep 4 13:34:15 vdr kernel: dvb-ttpci: ARM crashed @ card 0
Sep 4 13:34:16 vdr kernel: dvb-ttpci: gpioirq unknown type=0 len=0
Sep 4 13:34:16 vdr kernel: dvb-ttpci: adac type set to 0 @ card 0
@@ -500,6 +500,20 @@
data[2] = data[1];
data[1] = NULL;
}
+ else if (line == 2) {
+ // if line 1 is too long, it can't be the short text,
+ // so assume the short text is missing and concatenate
+ // line 1 and line 2 to be the long text.
+ size_t len1 = strlen(data[1]);
+ if (len1 > 80) {
+ data[1] = (char *)realloc(data[1], len1 + 1 + strlen(data[2]) + 1);
+ strcat(data[1], "\n");
+ strcat(data[1], data[2]);
+ free(data[2]);
+ data[2] = data[1];
+ data[1] = NULL;
+ }
+ }
info->SetData(data[0], data[1], data[2]);
for (int i = 0; i < 3; i ++)
free(data[i]);