@@ -275,7 +275,7 @@ static void start_fetch_loose(struct transfer_request *request)
275
275
if (!start_active_slot (slot )) {
276
276
fprintf (stderr , "Unable to start GET request\n" );
277
277
repo -> can_update_info_refs = 0 ;
278
- release_http_object_request (obj_req );
278
+ release_http_object_request (& obj_req );
279
279
release_request (request );
280
280
}
281
281
}
@@ -375,7 +375,7 @@ static void start_put(struct transfer_request *request)
375
375
/* Set it up */
376
376
git_deflate_init (& stream , zlib_compression_level );
377
377
size = git_deflate_bound (& stream , len + hdrlen );
378
- strbuf_init (& request -> buffer .buf , size );
378
+ strbuf_grow (& request -> buffer .buf , size );
379
379
request -> buffer .posn = 0 ;
380
380
381
381
/* Compress it */
@@ -437,9 +437,11 @@ static void start_move(struct transfer_request *request)
437
437
if (start_active_slot (slot )) {
438
438
request -> slot = slot ;
439
439
request -> state = RUN_MOVE ;
440
+ request -> headers = dav_headers ;
440
441
} else {
441
442
request -> state = ABORTED ;
442
443
FREE_AND_NULL (request -> url );
444
+ curl_slist_free_all (dav_headers );
443
445
}
444
446
}
445
447
@@ -512,6 +514,8 @@ static void release_request(struct transfer_request *request)
512
514
}
513
515
514
516
free (request -> url );
517
+ free (request -> dest );
518
+ strbuf_release (& request -> buffer .buf );
515
519
free (request );
516
520
}
517
521
@@ -578,9 +582,10 @@ static void finish_request(struct transfer_request *request)
578
582
if (obj_req -> rename == 0 )
579
583
request -> obj -> flags |= (LOCAL | REMOTE );
580
584
585
+ release_http_object_request (& obj_req );
586
+
581
587
/* Try fetching packed if necessary */
582
588
if (request -> obj -> flags & LOCAL ) {
583
- release_http_object_request (obj_req );
584
589
release_request (request );
585
590
} else
586
591
start_fetch_packed (request );
@@ -649,12 +654,10 @@ static void add_fetch_request(struct object *obj)
649
654
return ;
650
655
651
656
obj -> flags |= FETCHING ;
652
- request = xmalloc ( sizeof ( * request ) );
657
+ CALLOC_ARRAY ( request , 1 );
653
658
request -> obj = obj ;
654
- request -> url = NULL ;
655
- request -> lock = NULL ;
656
- request -> headers = NULL ;
657
659
request -> state = NEED_FETCH ;
660
+ strbuf_init (& request -> buffer .buf , 0 );
658
661
request -> next = request_queue_head ;
659
662
request_queue_head = request ;
660
663
@@ -685,12 +688,11 @@ static int add_send_request(struct object *obj, struct remote_lock *lock)
685
688
}
686
689
687
690
obj -> flags |= PUSHING ;
688
- request = xmalloc ( sizeof ( * request ) );
691
+ CALLOC_ARRAY ( request , 1 );
689
692
request -> obj = obj ;
690
- request -> url = NULL ;
691
693
request -> lock = lock ;
692
- request -> headers = NULL ;
693
694
request -> state = NEED_PUSH ;
695
+ strbuf_init (& request -> buffer .buf , 0 );
694
696
request -> next = request_queue_head ;
695
697
request_queue_head = request ;
696
698
@@ -912,6 +914,7 @@ static struct remote_lock *lock_remote(const char *path, long timeout)
912
914
result = XML_Parse (parser , in_buffer .buf ,
913
915
in_buffer .len , 1 );
914
916
free (ctx .name );
917
+ free (ctx .cdata );
915
918
if (result != XML_STATUS_OK ) {
916
919
fprintf (stderr , "XML error: %s\n" ,
917
920
XML_ErrorString (
@@ -1169,6 +1172,7 @@ static void remote_ls(const char *path, int flags,
1169
1172
result = XML_Parse (parser , in_buffer .buf ,
1170
1173
in_buffer .len , 1 );
1171
1174
free (ctx .name );
1175
+ free (ctx .cdata );
1172
1176
1173
1177
if (result != XML_STATUS_OK ) {
1174
1178
fprintf (stderr , "XML error: %s\n" ,
@@ -1182,6 +1186,7 @@ static void remote_ls(const char *path, int flags,
1182
1186
}
1183
1187
1184
1188
free (ls .path );
1189
+ free (ls .dentry_name );
1185
1190
free (url );
1186
1191
strbuf_release (& out_buffer .buf );
1187
1192
strbuf_release (& in_buffer );
@@ -1370,9 +1375,13 @@ static int get_delta(struct rev_info *revs, struct remote_lock *lock)
1370
1375
}
1371
1376
1372
1377
while (objects ) {
1378
+ struct object_list * next = objects -> next ;
1379
+
1373
1380
if (!(objects -> item -> flags & UNINTERESTING ))
1374
1381
count += add_send_request (objects -> item , lock );
1375
- objects = objects -> next ;
1382
+
1383
+ free (objects );
1384
+ objects = next ;
1376
1385
}
1377
1386
1378
1387
return count ;
@@ -1398,6 +1407,7 @@ static int update_remote(const struct object_id *oid, struct remote_lock *lock)
1398
1407
if (start_active_slot (slot )) {
1399
1408
run_active_slot (slot );
1400
1409
strbuf_release (& out_buffer .buf );
1410
+ curl_slist_free_all (dav_headers );
1401
1411
if (results .curl_result != CURLE_OK ) {
1402
1412
fprintf (stderr ,
1403
1413
"PUT error: curl result=%d, HTTP code=%ld\n" ,
@@ -1407,6 +1417,7 @@ static int update_remote(const struct object_id *oid, struct remote_lock *lock)
1407
1417
}
1408
1418
} else {
1409
1419
strbuf_release (& out_buffer .buf );
1420
+ curl_slist_free_all (dav_headers );
1410
1421
fprintf (stderr , "Unable to start PUT request\n" );
1411
1422
return 0 ;
1412
1423
}
@@ -1516,6 +1527,7 @@ static void update_remote_info_refs(struct remote_lock *lock)
1516
1527
results .curl_result , results .http_code );
1517
1528
}
1518
1529
}
1530
+ curl_slist_free_all (dav_headers );
1519
1531
}
1520
1532
strbuf_release (& buffer .buf );
1521
1533
}
@@ -1707,7 +1719,7 @@ int cmd_main(int argc, const char **argv)
1707
1719
int rc = 0 ;
1708
1720
int i ;
1709
1721
int new_refs ;
1710
- struct ref * ref , * local_refs ;
1722
+ struct ref * ref , * local_refs = NULL ;
1711
1723
1712
1724
CALLOC_ARRAY (repo , 1 );
1713
1725
@@ -1972,6 +1984,7 @@ int cmd_main(int argc, const char **argv)
1972
1984
cleanup :
1973
1985
if (info_ref_lock )
1974
1986
unlock_remote (info_ref_lock );
1987
+ free (repo -> url );
1975
1988
free (repo );
1976
1989
1977
1990
http_cleanup ();
@@ -1983,5 +1996,8 @@ int cmd_main(int argc, const char **argv)
1983
1996
request = next_request ;
1984
1997
}
1985
1998
1999
+ refspec_clear (& rs );
2000
+ free_refs (local_refs );
2001
+
1986
2002
return rc ;
1987
2003
}
0 commit comments