mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-01-06 20:10:22 +01:00
boilerplate-xcb: Avoid leaks on success
This gets rid of the following two leaks reported by valgrind when successfully running a test with CAIRO_TEST_TARGET=xcb: 8,000 bytes in 2 blocks are definitely lost in loss record 9 of 10 at 0x483877F: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) by 0x4B7E135: read_packet (xcb_in.c:259) by 0x4B7E135: _xcb_in_read (xcb_in.c:1031) by 0x4B7BF8E: _xcb_conn_wait (xcb_conn.c:516) by 0x4B7D6AE: wait_for_reply (xcb_in.c:516) by 0x4B7D8C8: xcb_request_check (xcb_in.c:745) by 0x18D747: _cairo_boilerplate_xcb_create_surface (cairo-boilerplate-xcb.c:310) by 0x12906F: cairo_test_for_target (cairo-test.c:819) by 0x12AAB5: _cairo_test_context_run_for_target (cairo-test.c:1555) by 0x126921: _cairo_test_runner_draw (cairo-test-runner.c:250) by 0x126921: main (cairo-test-runner.c:932) 8,000 bytes in 2 blocks are definitely lost in loss record 10 of 10 at 0x483877F: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) by 0x4B7E135: read_packet (xcb_in.c:259) by 0x4B7E135: _xcb_in_read (xcb_in.c:1031) by 0x4B7BF8E: _xcb_conn_wait (xcb_conn.c:516) by 0x4B7D6AE: wait_for_reply (xcb_in.c:516) by 0x4B7D7C0: xcb_wait_for_reply (xcb_in.c:546) by 0x18D45D: find_depth (cairo-boilerplate-xcb.c:154) by 0x18D45D: _cairo_boilerplate_xcb_create_render_0_0 (cairo-boilerplate-xcb.c:621) by 0x12906F: cairo_test_for_target (cairo-test.c:819) by 0x12AAB5: _cairo_test_context_run_for_target (cairo-test.c:1555) by 0x126921: _cairo_test_runner_draw (cairo-test-runner.c:250) by 0x126921: main (cairo-test-runner.c:932) Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
parent
e3eaccb939
commit
2ceb279d70
1 changed files with 3 additions and 1 deletions
|
|
@ -174,6 +174,7 @@ find_depth (xcb_connection_t *connection,
|
|||
}
|
||||
|
||||
static const cairo_user_data_key_t key;
|
||||
static const cairo_user_data_key_t key2;
|
||||
|
||||
struct similar {
|
||||
xcb_connection_t *connection;
|
||||
|
|
@ -365,6 +366,7 @@ _cairo_boilerplate_xcb_create_surface (const char *name,
|
|||
render_format,
|
||||
width, height);
|
||||
cairo_device_set_user_data (cairo_surface_get_device (surface), &key, info, free);
|
||||
cairo_device_set_user_data (cairo_surface_get_device (surface), &key2, info->formats, free);
|
||||
if (mode != CAIRO_BOILERPLATE_MODE_PERF)
|
||||
_cairo_boilerplate_xcb_setup_test_surface(surface);
|
||||
|
||||
|
|
@ -629,8 +631,8 @@ _cairo_boilerplate_xcb_create_render_0_0 (const char *name,
|
|||
xtc->drawable,
|
||||
render_format,
|
||||
width, height);
|
||||
free (formats);
|
||||
if (cairo_surface_status (surface)) {
|
||||
free (formats);
|
||||
xcb_disconnect (c);
|
||||
free (xtc);
|
||||
return surface;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue