[PATCH weston 1/3] compositor-x11: free or discard XCB generic_error's

Ran Benita ran234 at gmail.com
Wed Oct 31 11:14:56 PDT 2012


Where we don't look at the error details, pass NULL to the 'error'
argument and test using the reply return value instead.
Where we do need it, remember to free it.

Signed-off-by: Ran Benita <ran234 at gmail.com>
---
 src/compositor-x11.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/compositor-x11.c b/src/compositor-x11.c
index c654aec..c69b8f6 100644
--- a/src/compositor-x11.c
+++ b/src/compositor-x11.c
@@ -115,7 +115,6 @@ x11_compositor_get_keymap(struct x11_compositor *c)
 {
 	xcb_get_property_cookie_t cookie;
 	xcb_get_property_reply_t *reply;
-	xcb_generic_error_t *error;
 	struct xkb_rule_names names;
 	struct xkb_keymap *ret;
 	const char *value_all, *value_part;
@@ -125,7 +124,7 @@ x11_compositor_get_keymap(struct x11_compositor *c)
 
 	cookie = xcb_get_property(c->conn, 0, c->screen->root,
 				  c->atom.xkb_names, c->atom.string, 0, 1024);
-	reply = xcb_get_property_reply(c->conn, cookie, &error);
+	reply = xcb_get_property_reply(c->conn, cookie, NULL);
 	if (reply == NULL)
 		return NULL;
 
@@ -217,6 +216,7 @@ x11_compositor_setup_xkb(struct x11_compositor *c)
 	error = xcb_request_check(c->conn, select);
 	if (error) {
 		weston_log("error: failed to select for XKB state events\n");
+		free(error);
 		return;
 	}
 
@@ -227,19 +227,18 @@ x11_compositor_setup_xkb(struct x11_compositor *c)
 				       0,
 				       0,
 				       0);
-	pcf_reply = xcb_xkb_per_client_flags_reply(c->conn, pcf, &error);
-	free(pcf_reply);
-	if (error) {
+	pcf_reply = xcb_xkb_per_client_flags_reply(c->conn, pcf, NULL);
+	if (!pcf_reply) {
 		weston_log("failed to set XKB per-client flags, not using "
 			   "detectable repeat\n");
 		return;
 	}
+	free(pcf_reply);
 
 	state = xcb_xkb_get_state(c->conn, XCB_XKB_ID_USE_CORE_KBD);
-	state_reply = xcb_xkb_get_state_reply(c->conn, state, &error);
-	if (error) {
+	state_reply = xcb_xkb_get_state_reply(c->conn, state, NULL);
+	if (!state_reply) {
 		weston_log("failed to get initial XKB state\n");
-		free(state_reply);
 		return;
 	}
 
-- 
1.8.0



More information about the wayland-devel mailing list