apply: introduce macro and function to init images
We're about to convert the `struct image` to gain a `struct strbuf` member, which requires more careful initialization than just memsetting it to zeros. Introduce the `IMAGE_INIT` macro and `image_init()` function to prepare for this change. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
2231903778
commit
7db28d0133
22
apply.c
22
apply.c
@ -284,11 +284,19 @@ struct image {
|
|||||||
struct line *line_allocated;
|
struct line *line_allocated;
|
||||||
struct line *line;
|
struct line *line;
|
||||||
};
|
};
|
||||||
|
#define IMAGE_INIT { 0 }
|
||||||
|
|
||||||
|
static void image_init(struct image *image)
|
||||||
|
{
|
||||||
|
struct image empty = IMAGE_INIT;
|
||||||
|
memcpy(image, &empty, sizeof(*image));
|
||||||
|
}
|
||||||
|
|
||||||
static void image_clear(struct image *image)
|
static void image_clear(struct image *image)
|
||||||
{
|
{
|
||||||
free(image->buf);
|
free(image->buf);
|
||||||
free(image->line_allocated);
|
free(image->line_allocated);
|
||||||
|
image_init(image);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t hash_line(const char *cp, size_t len)
|
static uint32_t hash_line(const char *cp, size_t len)
|
||||||
@ -322,7 +330,7 @@ static void image_prepare(struct image *image, char *buf, size_t len,
|
|||||||
{
|
{
|
||||||
const char *cp, *ep;
|
const char *cp, *ep;
|
||||||
|
|
||||||
memset(image, 0, sizeof(*image));
|
image_clear(image);
|
||||||
image->buf = buf;
|
image->buf = buf;
|
||||||
image->len = len;
|
image->len = len;
|
||||||
|
|
||||||
@ -2314,7 +2322,7 @@ static void update_pre_post_images(struct image *preimage,
|
|||||||
{
|
{
|
||||||
int i, ctx, reduced;
|
int i, ctx, reduced;
|
||||||
char *new_buf, *old_buf, *fixed;
|
char *new_buf, *old_buf, *fixed;
|
||||||
struct image fixed_preimage;
|
struct image fixed_preimage = IMAGE_INIT;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Update the preimage with whitespace fixes. Note that we
|
* Update the preimage with whitespace fixes. Note that we
|
||||||
@ -2910,11 +2918,9 @@ static int apply_one_fragment(struct apply_state *state,
|
|||||||
int hunk_linenr = frag->linenr;
|
int hunk_linenr = frag->linenr;
|
||||||
unsigned long leading, trailing;
|
unsigned long leading, trailing;
|
||||||
int pos, applied_pos;
|
int pos, applied_pos;
|
||||||
struct image preimage;
|
struct image preimage = IMAGE_INIT;
|
||||||
struct image postimage;
|
struct image postimage = IMAGE_INIT;
|
||||||
|
|
||||||
memset(&preimage, 0, sizeof(preimage));
|
|
||||||
memset(&postimage, 0, sizeof(postimage));
|
|
||||||
oldlines = xmalloc(size);
|
oldlines = xmalloc(size);
|
||||||
strbuf_init(&newlines, size);
|
strbuf_init(&newlines, size);
|
||||||
|
|
||||||
@ -3650,7 +3656,7 @@ static int try_threeway(struct apply_state *state,
|
|||||||
size_t len;
|
size_t len;
|
||||||
int status;
|
int status;
|
||||||
char *img;
|
char *img;
|
||||||
struct image tmp_image;
|
struct image tmp_image = IMAGE_INIT;
|
||||||
|
|
||||||
/* No point falling back to 3-way merge in these cases */
|
/* No point falling back to 3-way merge in these cases */
|
||||||
if (patch->is_delete ||
|
if (patch->is_delete ||
|
||||||
@ -3727,7 +3733,7 @@ static int try_threeway(struct apply_state *state,
|
|||||||
static int apply_data(struct apply_state *state, struct patch *patch,
|
static int apply_data(struct apply_state *state, struct patch *patch,
|
||||||
struct stat *st, const struct cache_entry *ce)
|
struct stat *st, const struct cache_entry *ce)
|
||||||
{
|
{
|
||||||
struct image image;
|
struct image image = IMAGE_INIT;
|
||||||
|
|
||||||
if (load_preimage(state, &image, patch, st, ce) < 0)
|
if (load_preimage(state, &image, patch, st, ce) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
Reference in New Issue
Block a user