[PATCH 4/4] Remove remaining rename_dst references in _locate_element() and pass a pointer to it.
Signed-off-by: Yann Dirson <ydirson@altern.org>
---
diffcore-rename.c | 15 +++++++--------
1 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/diffcore-rename.c b/diffcore-rename.c
index a674fbb..a4e0a96 100644
--- a/diffcore-rename.c
+++ b/diffcore-rename.c
@@ -11,8 +11,8 @@
struct dst_obj {
struct diff_filespec *two;
};
-#define locate_element(list,elem,insert_ok) \
- _locate_element(elem, &list##_nr, &list##_alloc, \
+#define locate_element(list,elem,insert_ok) \
+ _locate_element((void**)&list, elem, &list##_nr, &list##_alloc, \
sizeof(*list), insert_ok)
/* Table of rename/copy destinations, "subclass" of dst_obj */
@@ -24,7 +24,7 @@ static int rename_dst_nr, rename_dst_alloc;
#define locate_rename_dst(elem,insert_ok) \
locate_element(rename_dst, elem, insert_ok)
-static void *_locate_element(struct diff_filespec *two,
+static void *_locate_element(void **listp, struct diff_filespec *two,
int *elem_nr_p, int *elem_alloc_p,
size_t elem_size, int insert_ok)
{
@@ -35,7 +35,7 @@ static void *_locate_element(struct diff_filespec *two,
last = (*elem_nr_p);
while (last > first) {
int next = (last + first) >> 1;
- struct dst_obj *dst = (void*)rename_dst + (next * elem_size);
+ struct dst_obj *dst = *listp + (next * elem_size);
int cmp = strcmp(two->path, dst->two->path);
if (!cmp)
return dst;
@@ -51,13 +51,12 @@ static void *_locate_element(struct diff_filespec *two,
/* insert to make it at "first" */
if ((*elem_alloc_p) <= (*elem_nr_p)) {
(*elem_alloc_p) = alloc_nr(*elem_alloc_p);
- rename_dst = xrealloc(rename_dst,
- (*elem_alloc_p) * elem_size);
+ *listp = xrealloc(*listp, (*elem_alloc_p) * elem_size);
}
(*elem_nr_p)++;
- first_elem_p = (void*)rename_dst + first * elem_size;
+ first_elem_p = *listp + first * elem_size;
if (first < (*elem_nr_p))
- memmove((void*)rename_dst + (first + 1) * elem_size,
+ memmove(*listp + (first + 1) * elem_size,
first_elem_p,
((*elem_nr_p) - first - 1) * elem_size);
first_elem_p->two = alloc_filespec(two->path);
--
1.7.2.3