summaryrefslogtreecommitdiff
path: root/src/cairo-colr-glyph-render.c
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2023-01-17 07:58:38 -0700
committerBehdad Esfahbod <behdad@behdad.org>2023-01-17 07:58:38 -0700
commit9e6c1e479f45bc185b67d0019e6454cbcc9b2a33 (patch)
tree47bac19251221d2eba602c2acd296c929607ee07 /src/cairo-colr-glyph-render.c
parent745c3717aa8e91237bf90de1b2e908c72499aa0f (diff)
downloadcairo-9e6c1e479f45bc185b67d0019e6454cbcc9b2a33.tar.gz
[COLRv1] Allocate context variable on the stack
Diffstat (limited to 'src/cairo-colr-glyph-render.c')
-rw-r--r--src/cairo-colr-glyph-render.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/src/cairo-colr-glyph-render.c b/src/cairo-colr-glyph-render.c
index 2388d9e02..d6cf8ed0a 100644
--- a/src/cairo-colr-glyph-render.c
+++ b/src/cairo-colr-glyph-render.c
@@ -1190,7 +1190,7 @@ _cairo_render_colr_v1_glyph (FT_Face face,
cairo_t *cr)
{
cairo_status_t status = CAIRO_STATUS_SUCCESS;
- cairo_colr_glyph_render_t *colr_render = NULL;
+ cairo_colr_glyph_render_t colr_render;
FT_Color *palette = NULL;
FT_Palette_Data palette_data;
@@ -1198,12 +1198,6 @@ _cairo_render_colr_v1_glyph (FT_Face face,
printf ("_cairo_render_colr_glyph glyph index: %ld\n", glyph);
#endif
- colr_render = _cairo_malloc (sizeof (cairo_colr_glyph_render_t));
- if (unlikely (colr_render == NULL)) {
- status = _cairo_error (CAIRO_STATUS_NO_MEMORY);
- goto cleanup;
- }
-
if (FT_Palette_Data_Get (face, &palette_data) == 0 && palette_data.num_palettes > 0) {
if (palette_index >= palette_data.num_palettes)
palette_index = CAIRO_COLOR_PALETTE_DEFAULT;
@@ -1212,22 +1206,18 @@ _cairo_render_colr_v1_glyph (FT_Face face,
palette = NULL;
}
- colr_render->face = face;
- colr_render->palette = palette;
- colr_render->num_palette_entries = palette_data.num_palette_entries;
- colr_render->foreground_color = cairo_pattern_reference (cairo_get_source (cr));
- colr_render->level = 0;
+ colr_render.face = face;
+ colr_render.palette = palette;
+ colr_render.num_palette_entries = palette_data.num_palette_entries;
+ colr_render.foreground_color = cairo_pattern_reference (cairo_get_source (cr));
+ colr_render.level = 0;
- status = draw_colr_glyph (colr_render,
+ status = draw_colr_glyph (&colr_render,
glyph,
FT_COLOR_INCLUDE_ROOT_TRANSFORM,
cr);
- cleanup:
- cairo_pattern_destroy (colr_render->foreground_color);
-
- if (colr_render)
- free (colr_render);
+ cairo_pattern_destroy (colr_render.foreground_color);
return status;
}