Guard calls to FT_Get_BDF_Property to avoid freetype jumping through null

pointer
This commit is contained in:
Keith Packard 2003-04-18 15:56:05 +00:00
parent 3a30abdb84
commit 29d961a28e
1 changed files with 9 additions and 3 deletions

View File

@ -57,7 +57,13 @@
#if (FREETYPE_MINOR > 1 || (FREETYPE_MINOR == 1 && FREETYPE_PATCH >= 4)) #if (FREETYPE_MINOR > 1 || (FREETYPE_MINOR == 1 && FREETYPE_PATCH >= 4))
#include <freetype/ftbdf.h> #include <freetype/ftbdf.h>
#include <freetype/ftmodule.h>
#define USE_FTBDF #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 #endif
@ -781,7 +787,7 @@ FcFreeTypeQuery (const FcChar8 *file,
{ {
int rc; int rc;
BDF_PropertyRec prop; 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) if(rc == 0 && prop.type == BDF_PROPERTY_TYPE_ATOM)
foundry = prop.u.atom; foundry = prop.u.atom;
} }
@ -789,7 +795,7 @@ FcFreeTypeQuery (const FcChar8 *file,
if (width == -1) if (width == -1)
{ {
BDF_PropertyRec prop; 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_INTEGER ||
prop.type == BDF_PROPERTY_TYPE_CARDINAL)) prop.type == BDF_PROPERTY_TYPE_CARDINAL))
{ {
@ -811,7 +817,7 @@ FcFreeTypeQuery (const FcChar8 *file,
case 9: width = FC_WIDTH_ULTRAEXPANDED; break; 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) prop.type == BDF_PROPERTY_TYPE_ATOM)
{ {
static struct { static struct {