]> git.wh0rd.org - fontconfig.git/commitdiff
Guard calls to FT_Get_BDF_Property to avoid freetype jumping through null
authorKeith Packard <keithp@keithp.com>
Fri, 18 Apr 2003 15:56:05 +0000 (15:56 +0000)
committerKeith Packard <keithp@keithp.com>
Fri, 18 Apr 2003 15:56:05 +0000 (15:56 +0000)
    pointer

src/fcfreetype.c

index 5c766d1a6e799e976c18659e19741686e238edf1..70642b5014a62f46b4dd977313119a1a97855de9 100644 (file)
 
 #if (FREETYPE_MINOR > 1 || (FREETYPE_MINOR == 1 && FREETYPE_PATCH >= 4))
 #include <freetype/ftbdf.h>
+#include <freetype/ftmodule.h>
 #define USE_FTBDF
+#define HAS_BDF_PROPERTY(f) ((f) && (f)->driver && \
+                            (f)->driver->root.clazz->get_interface)
+#define MY_Get_BDF_Property(f,n,p) (HAS_BDF_PROPERTY(f) ? \
+                                   FT_Get_BDF_Property(f,n,p) : \
+                                   FT_Err_Invalid_Argument)
 #endif
 
 
@@ -781,7 +787,7 @@ FcFreeTypeQuery (const FcChar8      *file,
     {
        int             rc;
        BDF_PropertyRec prop;
-       rc = FT_Get_BDF_Property(face, "FOUNDRY", &prop);
+       rc = MY_Get_BDF_Property(face, "FOUNDRY", &prop);
        if(rc == 0 && prop.type == BDF_PROPERTY_TYPE_ATOM)
            foundry = prop.u.atom;
     }
@@ -789,7 +795,7 @@ FcFreeTypeQuery (const FcChar8      *file,
     if (width == -1)
     {
        BDF_PropertyRec prop;
-       if (FT_Get_BDF_Property(face, "RELATIVE_SETWIDTH", &prop) == 0 &&
+       if (MY_Get_BDF_Property(face, "RELATIVE_SETWIDTH", &prop) == 0 &&
            (prop.type == BDF_PROPERTY_TYPE_INTEGER ||
             prop.type == BDF_PROPERTY_TYPE_CARDINAL))
        {
@@ -811,7 +817,7 @@ FcFreeTypeQuery (const FcChar8      *file,
            case 9: width = FC_WIDTH_ULTRAEXPANDED; break;
            }
        }
-       else if (FT_Get_BDF_Property (face, "SETWIDTH_NAME", &prop) == 0 &&
+       else if (MY_Get_BDF_Property (face, "SETWIDTH_NAME", &prop) == 0 &&
                 prop.type == BDF_PROPERTY_TYPE_ATOM)
        {
            static struct {