[cairo] [PATCH] Avoid appending an empty slot to an user data array when user_data is NULL.
Chris Wilson
chris at chris-wilson.co.uk
Fri Apr 17 08:33:35 PDT 2015
On Fri, Apr 17, 2015 at 08:59:17PM +0900, 江頭幸路 wrote:
> Otherwise, calling cairo_set_user_data(cr, key, 0, 0) many times
> causes a long user data array, almost all of whose slots are empty.
> It leads to unnecessarily much memory consumption and long execution time
> of
> cairo_set_user_data(cr, key, 0, 0) and cairo_get_user_data(cr, key) after
> it.
> ---
> src/cairo-array.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/src/cairo-array.c b/src/cairo-array.c
> index 4f3c082..58c9a38 100644
> --- a/src/cairo-array.c
> +++ b/src/cairo-array.c
> @@ -485,6 +485,9 @@ _cairo_user_data_array_set_data
> (cairo_user_data_array_t *array,
> return CAIRO_STATUS_SUCCESS;
> }
>
> + if (user_data == NULL)
> + return CAIRO_STATUS_SUCCESS;
Ok, I thought this might break a cairo_user_data_exists(), but since we
don't have one, this patch lgtm and doesn't seem to change the API.
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the cairo
mailing list