Hi!
Due to some weird "Sans Serif:Bold" bold font on my freshly installed open-suse 10.3 system I get a "segmentation fault" on startup. I had this already with one of the previous vdr versions and on my suse 10 linux, I just thought there must be something messed up on my rather old system.
Now, that I still got this exception I tried to track it down using gdb: I've come to cFont::GetFontFilename where FcFontSort returns "null".
I simple check (if fontset != null) fixed the segfault:
FcFontSet *fontset = FcFontSort(NULL, pat, FcFalse, NULL, NULL); if (fontset != NULL) { for (int i = 0; i < fontset->nfont; i++) { FcBool scalable; FcPatternGetBool(fontset->fonts[i], FC_SCALABLE, 0, &scalable); if (scalable) { FcChar8 *s = NULL; FcPatternGetString(fontset->fonts[i], FC_FILE, 0, &s); FontFileName = (char *)s; break; } } FcFontSetDestroy(fontset); }
VDR then started, just without any text output. After installing some additional fonts this has been fixed too ...
I think the NPE check would be great to be added to VDR. Thanks!
Ciao, Mario
Mario Ivankovits mario@ops.co.at wrote:
Now, that I still got this exception I tried to track it down using gdb: I've come to cFont::GetFontFilename where FcFontSort returns "null".
i had the same, but on my system i simply had no fonts installed at all.
I simple check (if fontset != null) fixed the segfault:
FcFontSet *fontset = FcFontSort(NULL, pat, FcFalse, NULL, NULL);
if (fontset != NULL) { // ... }
an "else" would be nice here so the user gets at least some hint what's the problem:
} else { esyslog(ERROR: no usable fonts found.); }
best regards ... clemens