server-info: clean up after writing info/packs

We allocate pack information in a static global list but never clean it up. This leaks memory, and means that calling update_server_info twice will generate a buggy file (it will have duplicate entries). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Sep 13, 2014 at 16:19 UTC 3907a4078a89cffde2e2e0e61a3bd41efba96c49
1 file changed +9
server-info.c
+9
@@ -233,6 +233,14 @@ static void init_pack_info(const char *infofile, int force)
233 info[i]->new_num = i;
234 }
235
236 +static void free_pack_info(void)
237 +{
238 + int i;
239 + for (i = 0; i < num_pack; i++)
240 + free(info[i]);
241 + free(info);
242 +}
243 +
244 static int write_pack_info_file(FILE *fp)
245 {
246 int i;
@@ -252,6 +260,7 @@ static int update_info_packs(int force)
260
261 init_pack_info(infofile, force);
262 ret = update_info_file(infofile, write_pack_info_file);
263 + free_pack_info();
264 free(infofile);
265 return ret;
266 }