diff options
author | lhchavez <lhchavez@lhchavez.com> | 2021-02-23 19:33:34 -0800 |
---|---|---|
committer | lhchavez <lhchavez@lhchavez.com> | 2021-08-08 19:08:59 -0700 |
commit | 231ca4fad36ce7b3dd5d79b599be46ab6001fc18 (patch) | |
tree | 6616d81c71b873f122134f046073defcc4f659c2 | |
parent | 9eb17d460cd681bbc14d56ed8fdf440bc69b5456 (diff) | |
download | libgit2-231ca4fad36ce7b3dd5d79b599be46ab6001fc18.tar.gz |
Proof-of-concept for a more aggressive GIT_UNUSED()
This adds a `-Wunused-result`-proof `GIT_UNUSED()`, just to demonstrate
that it works. With this, sortedcache.h is now completely
`GIT_WARN_UNUSED_RESULT`-annotated!
-rw-r--r-- | src/cc-compat.h | 10 | ||||
-rw-r--r-- | src/odb.c | 4 | ||||
-rw-r--r-- | src/refdb_fs.c | 6 | ||||
-rw-r--r-- | src/sortedcache.h | 3 | ||||
-rw-r--r-- | tests/core/sha1.c | 2 | ||||
-rw-r--r-- | tests/core/sortedcache.c | 6 | ||||
-rw-r--r-- | tests/index/addall.c | 4 | ||||
-rw-r--r-- | tests/index/bypath.c | 5 |
8 files changed, 22 insertions, 18 deletions
diff --git a/src/cc-compat.h b/src/cc-compat.h index de1469da8..21f321124 100644 --- a/src/cc-compat.h +++ b/src/cc-compat.h @@ -43,7 +43,15 @@ # define GIT_ALIGN(x,size) x #endif -#define GIT_UNUSED(x) ((void)(x)) +#if defined(__GNUC__) +# define GIT_UNUSED(x) \ + do { \ + typeof(x) _unused __attribute__((unused)); \ + _unused = (x); \ + } while (0) +#else +# define GIT_UNUSED(x) ((void)(x)) +#endif /* Define the printf format specifier to use for size_t output */ #if defined(_MSC_VER) || defined(__MINGW32__) @@ -573,7 +573,7 @@ int git_odb__add_default_backends( git_odb *db, const char *objects_dir, bool as_alternates, int alternate_depth) { - size_t i; + size_t i = 0; struct stat st; ino_t inode; git_odb_backend *loose, *packed; @@ -582,7 +582,7 @@ int git_odb__add_default_backends( * a cross-platform workaround for this */ #ifdef GIT_WIN32 GIT_UNUSED(i); - GIT_UNUSED(st); + GIT_UNUSED(&st); inode = 0; #else diff --git a/src/refdb_fs.c b/src/refdb_fs.c index 0b8e103c2..82977cc2c 100644 --- a/src/refdb_fs.c +++ b/src/refdb_fs.c @@ -122,7 +122,7 @@ static int packed_reload(refdb_fs_backend *backend) */ if (error <= 0) { if (error == GIT_ENOTFOUND) { - git_sortedcache_clear(backend->refcache, true); + GIT_UNUSED(git_sortedcache_clear(backend->refcache, true)); git_error_clear(); error = 0; } @@ -131,7 +131,7 @@ static int packed_reload(refdb_fs_backend *backend) /* At this point, refresh the packed refs from the loaded buffer. */ - git_sortedcache_clear(backend->refcache, false); + GIT_UNUSED(git_sortedcache_clear(backend->refcache, false)); scan = (char *)packedrefs.ptr; eof = scan + packedrefs.size; @@ -219,7 +219,7 @@ static int packed_reload(refdb_fs_backend *backend) parse_failed: git_error_set(GIT_ERROR_REFERENCE, "corrupted packed references file"); - git_sortedcache_clear(backend->refcache, false); + GIT_UNUSED(git_sortedcache_clear(backend->refcache, false)); git_sortedcache_wunlock(backend->refcache); git_buf_dispose(&packedrefs); diff --git a/src/sortedcache.h b/src/sortedcache.h index eb74be9e5..777b28bda 100644 --- a/src/sortedcache.h +++ b/src/sortedcache.h @@ -133,7 +133,8 @@ void git_sortedcache_updated(git_sortedcache *sc); * If `wlock` is true, grabs write lock and releases when done, otherwise * you should already be holding a write lock when you call this. */ -int git_sortedcache_clear(git_sortedcache *sc, bool wlock); +GIT_WARN_UNUSED_RESULT int git_sortedcache_clear( + git_sortedcache *sc, bool wlock); /* Find and/or insert item, returning pointer to item data. * You should already be holding the write lock when you call this. diff --git a/tests/core/sha1.c b/tests/core/sha1.c index f81d40854..196b00352 100644 --- a/tests/core/sha1.c +++ b/tests/core/sha1.c @@ -52,7 +52,7 @@ void test_core_sha1__detect_collision_attack(void) git_oid oid, expected; #ifdef GIT_SHA1_COLLISIONDETECT - GIT_UNUSED(expected); + GIT_UNUSED(&expected); cl_git_fail(sha1_file(&oid, FIXTURE_DIR "/shattered-1.pdf")); cl_assert_equal_s("SHA1 collision attack detected", git_error_last()->message); #else diff --git a/tests/core/sortedcache.c b/tests/core/sortedcache.c index 35e92ece9..d5bbcea19 100644 --- a/tests/core/sortedcache.c +++ b/tests/core/sortedcache.c @@ -54,7 +54,7 @@ void test_core_sortedcache__name_only(void) cl_assert_equal_i( GIT_ENOTFOUND, git_sortedcache_lookup_index(&pos, sc, "abc")); - git_sortedcache_clear(sc, true); + cl_git_pass(git_sortedcache_clear(sc, true)); cl_assert_equal_sz(0, git_sortedcache_entrycount(sc)); cl_assert(git_sortedcache_entry(sc, 0) == NULL); @@ -154,7 +154,7 @@ void test_core_sortedcache__in_memory(void) cl_assert_equal_i(0, free_count); - git_sortedcache_clear(sc, true); + cl_git_pass(git_sortedcache_clear(sc, true)); cl_assert_equal_i(5, free_count); @@ -247,7 +247,7 @@ static void sortedcache_test_reload(git_sortedcache *sc) cl_assert(git_sortedcache_lockandload(sc, &buf) > 0); - git_sortedcache_clear(sc, false); /* clear once we already have lock */ + cl_git_pass(git_sortedcache_clear(sc, false)); /* clear once we already have lock */ for (scan = buf.ptr; *scan; scan = after + 1) { int val = strtol(scan, &after, 0); diff --git a/tests/index/addall.c b/tests/index/addall.c index d1ef31daf..6f95f6386 100644 --- a/tests/index/addall.c +++ b/tests/index/addall.c @@ -318,11 +318,9 @@ void test_index_addall__files_in_folders(void) void test_index_addall__hidden_files(void) { +#ifdef GIT_WIN32 git_index *index; - GIT_UNUSED(index); - -#ifdef GIT_WIN32 addall_create_test_repo(true); cl_git_pass(git_repository_index(&index, g_repo)); diff --git a/tests/index/bypath.c b/tests/index/bypath.c index 21d3d3ed0..b32a0a789 100644 --- a/tests/index/bypath.c +++ b/tests/index/bypath.c @@ -49,13 +49,10 @@ void test_index_bypath__add_submodule_unregistered(void) void test_index_bypath__add_hidden(void) { +#ifdef GIT_WIN32 const git_index_entry *entry; bool hidden; - GIT_UNUSED(entry); - GIT_UNUSED(hidden); - -#ifdef GIT_WIN32 cl_git_mkfile("submod2/hidden_file", "you can't see me"); cl_git_pass(git_win32__hidden(&hidden, "submod2/hidden_file")); |