Mesa (master): disk_cache: Fix memory leaks in the unit test.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Dec 15 19:56:27 UTC 2020
Module: Mesa
Branch: master
Commit: 1d026e22752eb4138d46787d41ebfa2527e449fa
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1d026e22752eb4138d46787d41ebfa2527e449fa
Author: Eric Anholt <eric at anholt.net>
Date: Fri Dec 4 12:51:45 2020 -0800
disk_cache: Fix memory leaks in the unit test.
Needed for meson test with asan enabled.
Reviewed-by: Adam Jackson <ajax at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7936>
---
src/compiler/glsl/tests/cache_test.c | 34 ++++++++++++++++++++++++----------
1 file changed, 24 insertions(+), 10 deletions(-)
diff --git a/src/compiler/glsl/tests/cache_test.c b/src/compiler/glsl/tests/cache_test.c
index 76ea8e8b841..144fd72173c 100644
--- a/src/compiler/glsl/tests/cache_test.c
+++ b/src/compiler/glsl/tests/cache_test.c
@@ -51,6 +51,15 @@ expect_true(bool result, const char *test)
error = true;
}
}
+static void
+expect_false(bool result, const char *test)
+{
+ if (result) {
+ fprintf(stderr, "Error: Test '%s' failed: Expected=false"
+ ", Actual=true\n", test);
+ error = true;
+ }
+}
static void
expect_equal(uint64_t actual, uint64_t expected, const char *test)
@@ -162,7 +171,7 @@ does_cache_contain(struct disk_cache *cache, const cache_key key)
return false;
}
-static void *
+static bool
cache_exists(struct disk_cache *cache)
{
uint8_t dummy_key[20];
@@ -173,7 +182,10 @@ cache_exists(struct disk_cache *cache)
disk_cache_put(cache, dummy_key, data, sizeof(data), NULL);
disk_cache_wait_for_idle(cache);
- return disk_cache_get(cache, dummy_key, NULL);
+ void *result = disk_cache_get(cache, dummy_key, NULL);
+
+ free(result);
+ return result != NULL;
}
#define CACHE_TEST_TMP "./cache-test-tmp"
@@ -227,8 +239,8 @@ test_disk_cache_create(void)
/* Test with XDG_CACHE_HOME set */
setenv("XDG_CACHE_HOME", CACHE_TEST_TMP "/xdg-cache-home", 1);
cache = disk_cache_create("test", "make_check", 0);
- expect_null(cache_exists(cache), "disk_cache_create with XDG_CACHE_HOME set "
- "with a non-existing parent directory");
+ expect_false(cache_exists(cache), "disk_cache_create with XDG_CACHE_HOME set "
+ "with a non-existing parent directory");
err = mkdir(CACHE_TEST_TMP, 0755);
if (err != 0) {
@@ -236,10 +248,11 @@ test_disk_cache_create(void)
error = true;
return;
}
+ disk_cache_destroy(cache);
cache = disk_cache_create("test", "make_check", 0);
- expect_non_null(cache_exists(cache), "disk_cache_create with XDG_CACHE_HOME "
- "set");
+ expect_true(cache_exists(cache), "disk_cache_create with XDG_CACHE_HOME "
+ "set");
check_directories_created(CACHE_TEST_TMP "/xdg-cache-home/"
CACHE_DIR_NAME);
@@ -252,8 +265,8 @@ test_disk_cache_create(void)
setenv("MESA_GLSL_CACHE_DIR", CACHE_TEST_TMP "/mesa-glsl-cache-dir", 1);
cache = disk_cache_create("test", "make_check", 0);
- expect_null(cache_exists(cache), "disk_cache_create with MESA_GLSL_CACHE_DIR"
- " set with a non-existing parent directory");
+ expect_false(cache_exists(cache), "disk_cache_create with MESA_GLSL_CACHE_DIR"
+ " set with a non-existing parent directory");
err = mkdir(CACHE_TEST_TMP, 0755);
if (err != 0) {
@@ -261,10 +274,11 @@ test_disk_cache_create(void)
error = true;
return;
}
+ disk_cache_destroy(cache);
cache = disk_cache_create("test", "make_check", 0);
- expect_non_null(cache_exists(cache), "disk_cache_create with "
- "MESA_GLSL_CACHE_DIR set");
+ expect_true(cache_exists(cache), "disk_cache_create with "
+ "MESA_GLSL_CACHE_DIR set");
check_directories_created(CACHE_TEST_TMP "/mesa-glsl-cache-dir/"
CACHE_DIR_NAME);
More information about the mesa-commit
mailing list