diff options
| -rw-r--r-- | CONTRIBUTORS | 4 | ||||
| -rw-r--r-- | HISTORY | 2 | ||||
| -rw-r--r-- | font.c | 26 | 
3 files changed, 21 insertions, 11 deletions
| diff --git a/CONTRIBUTORS b/CONTRIBUTORS index a5ac694e..76572ef5 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -744,6 +744,7 @@ Georg Hitsch <georg@hitsch.at>  Clemens Kirchgatterer <clemens@thf.ath.cx>   for suggesting to change source directory name for plugins from 'SRC' to 'src'   for reporting a problem with user defined CFLAGS in libdtv/libvdr/Makefile + for suggesting an error log message if no fonts are found  Emil Naepflein <Emil.Naepflein@philosys.de>   for suggesting to take an active SVDRP connection into account when doing shutdown or @@ -2231,3 +2232,6 @@ Yarema Aka Knedlyk <yupadmin@gmail.com>  Lauri Nurmi <lanurmi@iki.fi>   for adding a missing '.' to the date returned by DayDateTime() + +Mario Ivankovits <mario@ops.co.at> + for fixing a crash if no fonts are found @@ -5514,3 +5514,5 @@ Video Disk Recorder Revision History    Stefan Huelswitt). The 'newplugin' and 'i18n-to-gettext.pl' scripts have been    changed accordingly. Plugin authors may want to adjust the 'i18n' target    of their Makefiles. +- Fixed a crash if no fonts are found (thanks to Mario Ivankovits and Clemens +  Kirchgatterer). @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: font.c 1.21 2007/06/23 11:25:42 kls Exp $ + * $Id: font.c 1.22 2007/11/04 11:08:12 kls Exp $   */  #include "font.h" @@ -395,17 +395,21 @@ cString cFont::GetFontFileName(const char *FontName)       FcConfigSubstitute(NULL, pat, FcMatchPattern);       FcDefaultSubstitute(pat);       FcFontSet *fontset = FcFontSort(NULL, pat, FcFalse, NULL, 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; +     if (fontset) { +        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); +        FcFontSetDestroy(fontset); +        } +     else +        esyslog("ERROR: no usable font found for '%s'", FontName);       FcPatternDestroy(pat);       free(fn);       FcFini(); | 
