if (_cairo_cache_lookup (cache, &key, (void **) &img)
if (_cairo_cache_lookup (cache, &key, (void **) &img, NULL)
_cairo_ft_font_glyph_bbox (void		       		*abstract_font,			   cairo_font_scale_t 		*sc,			   const cairo_glyph_t 		*glyphs,			   int                 		num_glyphs,			   cairo_box_t         		*bbox){    cairo_image_glyph_cache_entry_t *img;    cairo_cache_t *cache;    cairo_glyph_cache_key_t key;    cairo_ft_font_t *font = abstract_font;    cairo_fixed_t x1, y1, x2, y2;    int i;    bbox->p1.x = bbox->p1.y = CAIRO_MAXSHORT << 16;    bbox->p2.x = bbox->p2.y = CAIRO_MINSHORT << 16;    _cairo_lock_global_image_glyph_cache ();    cache = _cairo_get_global_image_glyph_cache();    if (cache == NULL 	|| font == NULL	|| glyphs == NULL) {	_cairo_unlock_global_image_glyph_cache ();        return CAIRO_STATUS_NO_MEMORY;    }    key.unscaled = &font->base;    key.scale = *sc;    for (i = 0; i < num_glyphs; i++)    {	img = NULL;	key.index = glyphs[i].index;	if (_cairo_cache_lookup (cache, &key, (void **) &img) 	    != CAIRO_STATUS_SUCCESS || img == NULL)	    continue;	x1 = _cairo_fixed_from_double (glyphs[i].x + img->size.x);	y1 = _cairo_fixed_from_double (glyphs[i].y + img->size.y);	x2 = x1 + _cairo_fixed_from_double (img->size.width);	y2 = y1 + _cairo_fixed_from_double (img->size.height);		if (x1 < bbox->p1.x)	    bbox->p1.x = x1;		if (y1 < bbox->p1.y)	    bbox->p1.y = y1;		if (x2 > bbox->p2.x)	    bbox->p2.x = x2;		if (y2 > bbox->p2.y)	    bbox->p2.y = y2;    }    _cairo_unlock_global_image_glyph_cache ();    return CAIRO_STATUS_SUCCESS;}