From bcb080b00abfd6bf10ba74d1bc4546d2386d4439 Mon Sep 17 00:00:00 2001 From: schu Date: Tue, 16 Aug 2011 09:57:43 +0200 Subject: [PATCH] reflog: fix memory leaks Make sure to free the existing reflog when we run out or memory while adding new entries. Signed-off-by: schu --- src/reflog.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/reflog.c b/src/reflog.c index 85e768123..a2dea8830 100644 --- a/src/reflog.c +++ b/src/reflog.c @@ -192,8 +192,10 @@ int git_reflog_read(git_reflog **reflog, git_reference *ref) git_path_join_n(log_path, 3, ref->owner->path_repository, GIT_REFLOG_DIR, ref->name); - if ((error = git_futils_readbuffer(&log_file, log_path)) < GIT_SUCCESS) + if ((error = git_futils_readbuffer(&log_file, log_path)) < GIT_SUCCESS) { + git_reflog_free(log); return git__rethrow(error, "Failed to read reflog. Cannot read file `%s`", log_path); + } error = reflog_parse(log, log_file.data, log_file.len); @@ -201,6 +203,8 @@ int git_reflog_read(git_reflog **reflog, git_reference *ref) if (error == GIT_SUCCESS) *reflog = log; + else + git_reflog_free(log); return error == GIT_SUCCESS ? GIT_SUCCESS : git__rethrow(error, "Failed to read reflog"); }