summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2015-05-13 16:12:45 +0200
committerCarlos Martín Nieto <cmn@dwim.me>2015-05-13 16:40:18 +0200
commit3e529e9d2dd2ae90d43612b9906f16c812101033 (patch)
tree8dd0b225773519d5e4fbdc035b5b2df4aa43cab3 /src
parentd01737b419fd61010d2a0948d5d77fb0f214820a (diff)
downloadlibgit2-3e529e9d2dd2ae90d43612b9906f16c812101033.tar.gz
Fix a few leaks
The interesting one is the notification macro, which was returning directly on a soft-abort instead of going through the cleanup.
Diffstat (limited to 'src')
-rw-r--r--src/stash.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/stash.c b/src/stash.c
index c79068edf..0c5cd1d2a 100644
--- a/src/stash.c
+++ b/src/stash.c
@@ -701,10 +701,14 @@ int git_stash_apply_init_options(git_stash_apply_options *opts, unsigned int ver
return 0;
}
-#define NOTIFY_PROGRESS(opts, progress_type) \
- if ((opts).progress_cb && \
- (error = (opts).progress_cb((progress_type), (opts).progress_payload))) \
- return (error < 0) ? error : -1;
+#define NOTIFY_PROGRESS(opts, progress_type) \
+ do { \
+ if ((opts).progress_cb && \
+ (error = (opts).progress_cb((progress_type), (opts).progress_payload))) { \
+ error = (error < 0) ? error : -1; \
+ goto cleanup; \
+ } \
+ } while(false);
int git_stash_apply(
git_repository *repo,