[cairo] Try to handle failure in set_user_data
This commit is contained in:
parent
2fede3ef4a
commit
281db89a68
|
@ -36,9 +36,6 @@
|
||||||
#include "hb-utf.hh"
|
#include "hb-utf.hh"
|
||||||
|
|
||||||
|
|
||||||
/* TODO Error handling in cairo set_user_data calls? */
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SECTION:hb-cairo
|
* SECTION:hb-cairo
|
||||||
* @title: hb-cairo
|
* @title: hb-cairo
|
||||||
|
@ -520,7 +517,11 @@ hb_cairo_init_scaled_font (cairo_scaled_font_t *scaled_font,
|
||||||
|
|
||||||
#ifdef HAVE_CAIRO_USER_FONT_FACE_SET_RENDER_COLOR_GLYPH_FUNC
|
#ifdef HAVE_CAIRO_USER_FONT_FACE_SET_RENDER_COLOR_GLYPH_FUNC
|
||||||
hb_map_t *color_cache = hb_map_create ();
|
hb_map_t *color_cache = hb_map_create ();
|
||||||
cairo_scaled_font_set_user_data (scaled_font, &color_cache_key, color_cache, _hb_cairo_destroy_map);
|
if (unlikely (CAIRO_STATUS_SUCCESS != cairo_scaled_font_set_user_data (scaled_font,
|
||||||
|
&color_cache_key,
|
||||||
|
color_cache,
|
||||||
|
_hb_cairo_destroy_map)))
|
||||||
|
hb_map_destroy (color_cache);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return CAIRO_STATUS_SUCCESS;
|
return CAIRO_STATUS_SUCCESS;
|
||||||
|
@ -629,10 +630,11 @@ user_font_face_create (hb_face_t *face)
|
||||||
cairo_user_font_face_set_render_color_glyph_func (cairo_face, hb_cairo_render_color_glyph);
|
cairo_user_font_face_set_render_color_glyph_func (cairo_face, hb_cairo_render_color_glyph);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
cairo_font_face_set_user_data (cairo_face,
|
if (unlikely (CAIRO_STATUS_SUCCESS != cairo_font_face_set_user_data (cairo_face,
|
||||||
&hb_cairo_face_user_data_key,
|
&hb_cairo_face_user_data_key,
|
||||||
(void *) hb_face_reference (face),
|
(void *) hb_face_reference (face),
|
||||||
hb_cairo_face_destroy);
|
hb_cairo_face_destroy)))
|
||||||
|
hb_face_destroy (face);
|
||||||
|
|
||||||
return cairo_face;
|
return cairo_face;
|
||||||
}
|
}
|
||||||
|
@ -658,10 +660,11 @@ hb_cairo_font_face_create_for_font (hb_font_t *font)
|
||||||
|
|
||||||
auto *cairo_face = user_font_face_create (font->face);
|
auto *cairo_face = user_font_face_create (font->face);
|
||||||
|
|
||||||
cairo_font_face_set_user_data (cairo_face,
|
if (unlikely (CAIRO_STATUS_SUCCESS != cairo_font_face_set_user_data (cairo_face,
|
||||||
&hb_cairo_font_user_data_key,
|
&hb_cairo_font_user_data_key,
|
||||||
(void *) hb_font_reference (font),
|
(void *) hb_font_reference (font),
|
||||||
hb_cairo_font_destroy);
|
hb_cairo_font_destroy)))
|
||||||
|
hb_font_destroy (font);
|
||||||
|
|
||||||
return cairo_face;
|
return cairo_face;
|
||||||
}
|
}
|
||||||
|
@ -742,10 +745,17 @@ hb_cairo_font_face_set_font_init_func (cairo_font_face_t *font_face,
|
||||||
&hb_cairo_font_init_func_user_data_key,
|
&hb_cairo_font_init_func_user_data_key,
|
||||||
(void *) func,
|
(void *) func,
|
||||||
nullptr);
|
nullptr);
|
||||||
cairo_font_face_set_user_data (font_face,
|
if (unlikely (CAIRO_STATUS_SUCCESS != cairo_font_face_set_user_data (font_face,
|
||||||
&hb_cairo_font_init_user_data_user_data_key,
|
&hb_cairo_font_init_user_data_user_data_key,
|
||||||
(void *) user_data,
|
(void *) user_data,
|
||||||
destroy);
|
destroy)) && destroy)
|
||||||
|
{
|
||||||
|
destroy (user_data);
|
||||||
|
cairo_font_face_set_user_data (font_face,
|
||||||
|
&hb_cairo_font_init_func_user_data_key,
|
||||||
|
nullptr,
|
||||||
|
nullptr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue