Merge fontconfig segfault fix.

This commit is contained in:
Marshall T. Vandegrift 2008-12-15 22:44:24 -05:00
commit e0e7667e2b

View File

@ -111,9 +111,12 @@ class FcValue(Structure):
('u', _FcValue) ('u', _FcValue)
] ]
class FcObjectSet(Structure): pass
lib = load_library() lib = load_library()
lib.FcPatternBuild.restype = POINTER(FcPattern)
lib.FcPatternCreate.restype = c_void_p lib.FcPatternCreate.restype = c_void_p
lib.FcObjectSetCreate.restype = c_void_p lib.FcObjectSetCreate.restype = POINTER(FcObjectSet)
lib.FcFontSetDestroy.argtypes = [POINTER(FcFontSet)] lib.FcFontSetDestroy.argtypes = [POINTER(FcFontSet)]
lib.FcFontList.restype = POINTER(FcFontSet) lib.FcFontList.restype = POINTER(FcFontSet)
lib.FcNameUnparse.argtypes = [POINTER(FcPattern)] lib.FcNameUnparse.argtypes = [POINTER(FcPattern)]
@ -238,7 +241,7 @@ def files_for_family(family, normalize=True):
join() join()
if isinstance(family, unicode): if isinstance(family, unicode):
family = family.encode(preferred_encoding) family = family.encode(preferred_encoding)
family_pattern = lib.FcPatternBuild(0, 'family', FcTypeString, family, 0) family_pattern = lib.FcPatternBuild(0, 'family', FcTypeString, family, None)
if not family_pattern: if not family_pattern:
raise RuntimeError('Allocation failure') raise RuntimeError('Allocation failure')
#lib.FcPatternPrint(family_pattern) #lib.FcPatternPrint(family_pattern)
@ -256,8 +259,8 @@ def files_for_family(family, normalize=True):
fonts = {} fonts = {}
fs = lib.FcFontList(0, family_pattern, oset) fs = lib.FcFontList(0, family_pattern, oset)
font_set = fs.contents font_set = fs.contents
file = pointer(create_string_buffer(chr(0), 5000)) file = pointer(create_string_buffer(5000))
full_name = pointer(create_string_buffer(chr(0), 200)) full_name = pointer(create_string_buffer(200))
weight = c_int(0) weight = c_int(0)
slant = c_int(0) slant = c_int(0)
fname = '' fname = ''