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

江頭幸路 <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <CABXrqWv4yq6dyV3y9be8YgSQUCup6w_tJKUEgHU8apeQ2K1VbA@mail.gmail.com>
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

-- 
.

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.