summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené Scharfe <l.s.r@web.de>2017-07-20 22:32:56 +0200
committerJunio C Hamano <gitster@pobox.com>2017-07-20 14:50:20 -0700
commitc7b078054523a1a16ec49d9071877475c4ca5482 (patch)
tree289f9284be95e6cbca9a856cef7f70a56b6ca548
parent08f9c32463bf9e578acb7ac5f77afd36e803c6bc (diff)
downloadgit-rs/pack-objects-pbase-cleanup.tar.gz
pack-objects: remove unnecessary NULL checkrs/pack-objects-pbase-cleanup
If done_pbase_paths is NULL then done_pbase_paths_num must be zero and done_pbase_path_pos() returns -1 without accessing the array, so the check is not necessary. If the invariant was violated then the check would make sure we keep on going and allocate the necessary amount of memory in the next ALLOC_GROW call. That sounds nice, but all array entries except for one would contain garbage data. If the invariant was violated without the check we'd get a segfault in done_pbase_path_pos(), i.e. an observable crash, alerting us of the presence of a bug. Currently there is no such bug: Only the functions check_pbase_path() and cleanup_preferred_base() change pointer and counter, and both make sure to keep them in sync. Get rid of the check anyway to allow us to see if later changes introduce such a defect, and to simplify the code. Detected by Coverity Scan. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/pack-objects.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index 50e01aa80e..acfc2500e2 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -1283,7 +1283,7 @@ static int done_pbase_path_pos(unsigned hash)
static int check_pbase_path(unsigned hash)
{
- int pos = (!done_pbase_paths) ? -1 : done_pbase_path_pos(hash);
+ int pos = done_pbase_path_pos(hash);
if (0 <= pos)
return 1;
pos = -pos - 1;