[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