instead of the specific one that was simpler but less efficient.
Signed-off-by: Christian Couder <redacted>
---
replace_object.c | 24 +++++++++---------------
1 files changed, 9 insertions(+), 15 deletions(-)
diff --git a/replace_object.c b/replace_object.c
index 1227214..eb59604 100644
--- a/replace_object.c
+++ b/replace_object.c
@@ -1,4 +1,5 @@
#include "cache.h"
+#include "sha1-lookup.h"
#include "refs.h"
static struct replace_object {@@ -7,23 +8,16 @@ static struct replace_object {
static int replace_object_alloc, replace_object_nr;
+static const unsigned char *replace_sha1_access(size_t index, void *table)
+{
+ struct replace_object **replace = table;
+ return replace[index]->sha1[0];
+}
+
static int replace_object_pos(const unsigned char *sha1)
{
- int lo, hi;
- lo = 0;
- hi = replace_object_nr;
- while (lo < hi) {
- int mi = (lo + hi) / 2;
- struct replace_object *rep = replace_object[mi];
- int cmp = hashcmp(sha1, rep->sha1[0]);
- if (!cmp)
- return mi;
- if (cmp < 0)
- hi = mi;
- else
- lo = mi + 1;
- }
- return -lo - 1;
+ return sha1_pos(sha1, replace_object, replace_object_nr,
+ replace_sha1_access);
}
static int register_replace_object(struct replace_object *replace,--
1.6.2.2.404.ge96f3.dirty