зеркало из https://github.com/microsoft/git.git
Merge branch 'cc/delta-islands'
A few issues in the implementation of "delta-islands" feature has been corrected. * cc/delta-islands: pack-objects: fix off-by-one in delta-island tree-depth computation pack-objects: zero-initialize tree_depth/layer arrays pack-objects: fix tree_depth and layer invariants
This commit is contained in:
Коммит
7fab474656
|
@ -2786,9 +2786,11 @@ static void show_object(struct object *obj, const char *name, void *data)
|
|||
|
||||
if (use_delta_islands) {
|
||||
const char *p;
|
||||
unsigned depth = 0;
|
||||
unsigned depth;
|
||||
struct object_entry *ent;
|
||||
|
||||
/* the empty string is a root tree, which is depth 0 */
|
||||
depth = *name ? 1 : 0;
|
||||
for (p = strchr(name, '/'); p; p = strchr(p + 1, '/'))
|
||||
depth++;
|
||||
|
||||
|
|
|
@ -861,6 +861,7 @@ extern FILE *fopen_or_warn(const char *path, const char *mode);
|
|||
#define FREE_AND_NULL(p) do { free(p); (p) = NULL; } while (0)
|
||||
|
||||
#define ALLOC_ARRAY(x, alloc) (x) = xmalloc(st_mult(sizeof(*(x)), (alloc)))
|
||||
#define CALLOC_ARRAY(x, alloc) (x) = xcalloc((alloc), sizeof(*(x)));
|
||||
#define REALLOC_ARRAY(x, alloc) (x) = xrealloc((x), st_mult(sizeof(*(x)), (alloc)))
|
||||
|
||||
#define COPY_ARRAY(dst, src, n) copy_array((dst), (src), (n), sizeof(*(dst)) + \
|
||||
|
|
|
@ -412,7 +412,7 @@ static inline void oe_set_tree_depth(struct packing_data *pack,
|
|||
unsigned int tree_depth)
|
||||
{
|
||||
if (!pack->tree_depth)
|
||||
ALLOC_ARRAY(pack->tree_depth, pack->nr_objects);
|
||||
CALLOC_ARRAY(pack->tree_depth, pack->nr_alloc);
|
||||
pack->tree_depth[e - pack->objects] = tree_depth;
|
||||
}
|
||||
|
||||
|
@ -429,7 +429,7 @@ static inline void oe_set_layer(struct packing_data *pack,
|
|||
unsigned char layer)
|
||||
{
|
||||
if (!pack->layer)
|
||||
ALLOC_ARRAY(pack->layer, pack->nr_objects);
|
||||
CALLOC_ARRAY(pack->layer, pack->nr_alloc);
|
||||
pack->layer[e - pack->objects] = layer;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче