[PATCH rendercheck 2/4] Be valgrind-clean

Adam Jackson ajax at redhat.com
Mon Mar 14 19:09:02 UTC 2016


Signed-off-by: Adam Jackson <ajax at redhat.com>
---
 main.c               | 16 +++++++++++-----
 t_gtk_argb_xbgr.c    |  6 ++++++
 t_libreoffice_xrgb.c |  1 +
 tests.c              | 20 +++++++++++++++++++-
 4 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/main.c b/main.c
index 4cec99b..0d3d146 100644
--- a/main.c
+++ b/main.c
@@ -31,7 +31,7 @@ bool is_verbose = false, minimalrendering = false;
 int enabled_tests = ~0;		/* Enable all tests by default */
 
 int format_whitelist_len = 0;
-char **format_whitelist;
+char **format_whitelist = NULL;
 
 /* Number of times to repeat operations so that pixmaps will tend to get moved
  * into offscreen memory and allow hardware acceleration.
@@ -173,7 +173,7 @@ int main(int argc, char **argv)
 {
 	Display *dpy;
 	XEvent ev;
-	int i, o, maj, min;
+	int i, o, maj, min, ret = 1;
 	static int is_sync = false, print_version = false;
 	static int longopt_minimalrendering = 0;
 	XWindowAttributes a;
@@ -346,12 +346,18 @@ int main(int argc, char **argv)
 	while (XNextEvent(dpy, &ev) == 0) {
 		if (ev.type == Expose && !ev.xexpose.count) {
 			if (do_tests(dpy, &window))
-				exit(0);
+				ret = 0;
 			else
-				exit(1);
+				ret = 1;
+			break;
 		}
 	}
 
+	free(window.name);
+	for (i = 0; i < format_whitelist_len; i++)
+		free(format_whitelist[i]);
+	free(format_whitelist);
+
         XCloseDisplay(dpy);
-	return 0;
+	return ret;
 }
diff --git a/t_gtk_argb_xbgr.c b/t_gtk_argb_xbgr.c
index f19dfea..e95cb85 100644
--- a/t_gtk_argb_xbgr.c
+++ b/t_gtk_argb_xbgr.c
@@ -149,6 +149,12 @@ test_gtk_argb_xbgr(Display *dpy)
 		}
 	}
 
+	free(image_32->data);
+	XFree(image_32);
+	XFree(image_24->data);
+	XFree(image_24);
+	XFreeGC(dpy, gc_32);
+
 	record_result(&result, true);
 	return result;
 }
diff --git a/t_libreoffice_xrgb.c b/t_libreoffice_xrgb.c
index 1398a01..3196078 100644
--- a/t_libreoffice_xrgb.c
+++ b/t_libreoffice_xrgb.c
@@ -160,6 +160,7 @@ libreoffice_xrgb_test_one(Display *dpy, bool invert)
 		}
 	}
 	XDestroyImage(image);
+	XFreeGC(dpy, gc);
 
 	return true;
 }
diff --git a/tests.c b/tests.c
index ff2bbd8..cca96b4 100644
--- a/tests.c
+++ b/tests.c
@@ -243,7 +243,7 @@ create_formats_list(Display *dpy)
     memset(&templ, 0, sizeof(templ));
     templ.type = PictTypeDirect;
 
-    formats = malloc(sizeof(*formats) * nformats_allocated);
+    formats = calloc(sizeof(*formats), nformats_allocated);
     if (formats == NULL)
 	errx(1, "malloc error");
     nformats = 0;
@@ -745,6 +745,24 @@ do {								\
 		success_mask |= TEST_BUG7366;
 	}
 
+	for (i = 0; i < num_colors * nformats; i++) {
+	    free(pictures_1x1[i].name);
+	    free(pictures_10x10[i].name);
+	}
+	free(pictures_1x1);
+	free(pictures_10x10);
+	free(pictures_solid);
+
+	for (i = 0; i < num_dests; i++) {
+	    free(dests[i].name);
+	}
+	free(dests);
+
+	for (i = 0; i < nformats; i++) {
+	    free(formats[i].name);
+	}
+	free(formats);
+
 	free(test_ops);
 	free(test_src);
 	free(test_mask);
-- 
2.5.0



More information about the xorg-devel mailing list