summaryrefslogtreecommitdiff
path: root/git-compat-util.h
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2014-05-06 15:14:42 (GMT)
committerJunio C Hamano <gitster@pobox.com>2014-05-06 22:30:38 (GMT)
commit87fe5df3653cf20b6bf9854bea42e4016c7d4688 (patch)
tree305ccac4474a31bbdeb9025ed497089102972479 /git-compat-util.h
parent0bc85abb7aa9b24b093253018801a0fb43d01122 (diff)
downloadgit-87fe5df3653cf20b6bf9854bea42e4016c7d4688.zip
git-87fe5df3653cf20b6bf9854bea42e4016c7d4688.tar.gz
git-87fe5df3653cf20b6bf9854bea42e4016c7d4688.tar.bz2
inline constant return from error() function
Commit e208f9c introduced a macro to turn error() calls into: (error(), -1) to make the constant return value more visible to the calling code (and thus let the compiler make better decisions about the code). This works well for code like: return error(...); but the "-1" is superfluous in code that just calls error() without caring about the return value. In older versions of gcc, that was fine, but gcc 4.9 complains with -Wunused-value. We can work around this by encapsulating the constant return value in a static inline function, as gcc specifically avoids complaining about unused function returns unless the function has been specifically marked with the warn_unused_result attribute. We also use the same trick for config_error_nonbool and opterror, which learned the same error technique in a469a10. Reported-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-compat-util.h')
-rw-r--r--git-compat-util.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/git-compat-util.h b/git-compat-util.h
index d493a8c..90b988a 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -343,7 +343,11 @@ extern void warning(const char *err, ...) __attribute__((format (printf, 1, 2)))
* using the function as usual.
*/
#if defined(__GNUC__) && ! defined(__clang__)
-#define error(...) (error(__VA_ARGS__), -1)
+static inline int const_error(void)
+{
+ return -1;
+}
+#define error(...) (error(__VA_ARGS__), const_error())
#endif
extern void set_die_routine(NORETURN_PTR void (*routine)(const char *err, va_list params));