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