From d7f0ababe1882c8351093231d986de26f9df670d Mon Sep 17 00:00:00 2001 From: "Kirill A. Shutemov" Date: Wed, 24 Aug 2011 20:10:50 +0300 Subject: [PATCH 1/2] Fix false positive -Wuninitialized warnings GCC produces several -Wuninitialized warnings. Most of them can be fixed if we make visible for gcc that git__throw() and git__rethrow() always return first argument. Signed-off-by: Kirill A. Shutemov --- src/common.h | 9 +++++++-- src/errors.c | 8 ++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/common.h b/src/common.h index e1e7f0035..5986a6568 100644 --- a/src/common.h +++ b/src/common.h @@ -46,8 +46,13 @@ typedef SSIZE_T ssize_t; #include "thread-utils.h" #include "bswap.h" -extern int git__throw(int error, const char *, ...) GIT_FORMAT_PRINTF(2, 3); -extern int git__rethrow(int error, const char *, ...) GIT_FORMAT_PRINTF(2, 3); +extern void git___throw(const char *, ...) GIT_FORMAT_PRINTF(1, 2); +#define git__throw(error, ...) \ + (git___throw(__VA_ARGS__), error) + +extern void git___rethrow(const char *, ...) GIT_FORMAT_PRINTF(1, 2); +#define git__rethrow(error, ...) \ + (git___rethrow(__VA_ARGS__), error) #include "util.h" diff --git a/src/errors.c b/src/errors.c index e9022c3d1..5031245de 100644 --- a/src/errors.c +++ b/src/errors.c @@ -77,7 +77,7 @@ const char *git_strerror(int num) return "Unknown error"; } -int git__rethrow(int error, const char *msg, ...) +void git___rethrow(const char *msg, ...) { char new_error[1024]; char *old_error = NULL; @@ -91,19 +91,15 @@ int git__rethrow(int error, const char *msg, ...) old_error = strdup(g_last_error); snprintf(g_last_error, sizeof(g_last_error), "%s \n - %s", new_error, old_error); free(old_error); - - return error; } -int git__throw(int error, const char *msg, ...) +void git___throw(const char *msg, ...) { va_list va; va_start(va, msg); vsnprintf(g_last_error, sizeof(g_last_error), msg, va); va_end(va); - - return error; } const char *git_lasterror(void) From c75a890b603179d5ea1d646d63019688f995f87c Mon Sep 17 00:00:00 2001 From: "Kirill A. Shutemov" Date: Wed, 24 Aug 2011 20:11:15 +0300 Subject: [PATCH 2/2] transport_git: add missed error handling Signed-off-by: Kirill A. Shutemov --- src/transport_git.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/transport_git.c b/src/transport_git.c index 88ad7a901..1774c0ada 100644 --- a/src/transport_git.c +++ b/src/transport_git.c @@ -151,6 +151,8 @@ static int do_connect(transport_git *t, const char *url) url += STRLEN(prefix); error = extract_host_and_port(&host, &port, url); + if (error < GIT_SUCCESS) + return error; s = gitno_connect(host, port); connected = 1; error = send_request(s, NULL, url);