vcs-svn: do not initialize report_buffer twice
When importing from a dump with deltas, first fast_export_init calls buffer_fdinit, and then init_report_buffer calls fdopen once again when processing the first delta. The second initialization is redundant and leaks a FILE *. Remove the redundant on-demand initialization to fix this. Initializing directly in fast_export_init is simpler and lets the caller pass an int specifying which fd to use instead of hard-coding REPORT_FILENO. Signed-off-by: Dmitry Ivankov <divanorama@gmail.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
This commit is contained in:
parent
3ac10b2e3f
commit
c5f1fbe7bc
@ -14,7 +14,6 @@
|
|||||||
#include "line_buffer.h"
|
#include "line_buffer.h"
|
||||||
|
|
||||||
#define MAX_GITSVN_LINE_LEN 4096
|
#define MAX_GITSVN_LINE_LEN 4096
|
||||||
#define REPORT_FILENO 3
|
|
||||||
|
|
||||||
static uint32_t first_commit_done;
|
static uint32_t first_commit_done;
|
||||||
static struct line_buffer postimage = LINE_BUFFER_INIT;
|
static struct line_buffer postimage = LINE_BUFFER_INIT;
|
||||||
@ -30,15 +29,6 @@ static int init_postimage(void)
|
|||||||
return buffer_tmpfile_init(&postimage);
|
return buffer_tmpfile_init(&postimage);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int init_report_buffer(int fd)
|
|
||||||
{
|
|
||||||
static int report_buffer_initialized;
|
|
||||||
if (report_buffer_initialized)
|
|
||||||
return 0;
|
|
||||||
report_buffer_initialized = 1;
|
|
||||||
return buffer_fdinit(&report_buffer, fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
void fast_export_init(int fd)
|
void fast_export_init(int fd)
|
||||||
{
|
{
|
||||||
if (buffer_fdinit(&report_buffer, fd))
|
if (buffer_fdinit(&report_buffer, fd))
|
||||||
@ -203,8 +193,6 @@ static long apply_delta(off_t len, struct line_buffer *input,
|
|||||||
|
|
||||||
if (init_postimage() || !(out = buffer_tmpfile_rewind(&postimage)))
|
if (init_postimage() || !(out = buffer_tmpfile_rewind(&postimage)))
|
||||||
die("cannot open temporary file for blob retrieval");
|
die("cannot open temporary file for blob retrieval");
|
||||||
if (init_report_buffer(REPORT_FILENO))
|
|
||||||
die("cannot open fd 3 for feedback from fast-import");
|
|
||||||
if (old_data) {
|
if (old_data) {
|
||||||
const char *response;
|
const char *response;
|
||||||
printf("cat-blob %s\n", old_data);
|
printf("cat-blob %s\n", old_data);
|
||||||
|
Loading…
Reference in New Issue
Block a user