entry->key.pattern = FcPatternDuplicate (k->pattern); if (!entry->key.pattern) {
entry->unscaled = _ft_unscaled_font_create_from_filename (ftcache->lib, k->filename, k->id); if (!entry->unscaled) {
_ft_font_cache_create_entry (void *cache,			     void *key,			     void **return_entry){    ft_cache_t *ftcache = (ft_cache_t *) cache;    cairo_ft_cache_key_t *k = (cairo_ft_cache_key_t *) key;    cairo_ft_cache_entry_t *entry;    entry = malloc (sizeof (cairo_ft_cache_entry_t));    if (entry == NULL)	return CAIRO_STATUS_NO_MEMORY;    entry->key.pattern = FcPatternDuplicate (k->pattern);    if (!entry->key.pattern) {	free (entry);	return CAIRO_STATUS_NO_MEMORY;    }    entry->val = _create_from_library_and_pattern (ftcache->lib, entry->key.pattern);    entry->key.base.memory = 1;    *return_entry = entry;    return CAIRO_STATUS_SUCCESS;}