[cairo] [PATCH] Avoid appending an empty slot to an user data array when user_data is NULL.

江頭幸路 koji.egashira at access-company.com
Fri Apr 17 04:59:17 PDT 2015


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;
+
     status = _cairo_array_append (array, &new_slot);
     if (unlikely (status))
     return status;
-- 
1.7.9.5

-- 
.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo/attachments/20150417/8fbce17a/attachment.html>


More information about the cairo mailing list