diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2023-01-17 07:58:38 -0700 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2023-01-17 07:58:38 -0700 |
commit | 9e6c1e479f45bc185b67d0019e6454cbcc9b2a33 (patch) | |
tree | 47bac19251221d2eba602c2acd296c929607ee07 /src/cairo-colr-glyph-render.c | |
parent | 745c3717aa8e91237bf90de1b2e908c72499aa0f (diff) | |
download | cairo-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.c | 26 |
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; } |