On Wed, 22 Oct 2008, Jeff King wrote: > In the main loop of find_deltas, we do: > > struct object_entry *entry = *list++; > ... > if (!*list_size) > ... > break > > Because we look at and increment *list _before_ the check of > list_size, in the very last iteration of the loop we will > look at uninitialized data, and increment the pointer beyond > one past the end of the allocated space. Since we don't > actually do anything with the data until after the check, > this is not a problem in practice. > > But since it technically violates the C standard, and > because it provokes a spurious valgrind warning, let's just > move the initialization of entry to a safe place. > > This fixes valgrind errors in t5300, t5301, t5302, t303, and > t9400. > > Signed-off-by: Jeff King <peff@xxxxxxxx> OK. Minor nit... > --- > builtin-pack-objects.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c > index 59c30d1..15b80db 100644 > --- a/builtin-pack-objects.c > +++ b/builtin-pack-objects.c > @@ -1375,7 +1375,7 @@ static void find_deltas(struct object_entry **list, unsigned *list_size, > array = xcalloc(window, sizeof(struct unpacked)); > > for (;;) { > - struct object_entry *entry = *list++; > + struct object_entry *entry; > struct unpacked *n = array + idx; > int j, max_depth, best_base = -1; > > @@ -1384,6 +1384,7 @@ static void find_deltas(struct object_entry **list, unsigned *list_size, > progress_unlock(); > break; > } ---> Please preserve the empty line here so the previous code chunk still appears logically separate. > + entry = *list++; > (*list_size)--; > if (!entry->preferred_base) { > (*processed)++; Nicolas -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html