error_errno: use constant return similar to error()

Commit e208f9c (make error()'s constant return value more
visible, 2012-12-15) introduced some macro trickery to make
the constant return from error() more visible to callers,
which in turn can help gcc produce better warnings (and
possibly even better code).

Later, fd1d672 (usage.c: add warning_errno() and
error_errno(), 2016-05-08) introduced another variant, and
subsequent commits converted some uses of error() to
error_errno(), losing the magic from e208f9c for those
sites.

As a result, compiling vcs-svn/svndiff.c with "gcc -O3"
produces -Wmaybe-uninitialized false positives (at least
with gcc 6.2.0). Let's give error_errno() the same
treatment, which silences these warnings.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2016-08-30 23:41:22 -04:00 committed by Junio C Hamano
parent e0c1ceafc5
commit 4df5e91867
2 changed files with 2 additions and 0 deletions

View File

@ -436,6 +436,7 @@ static inline int const_error(void)
return -1; return -1;
} }
#define error(...) (error(__VA_ARGS__), const_error()) #define error(...) (error(__VA_ARGS__), const_error())
#define error_errno(...) (error_errno(__VA_ARGS__), const_error())
#endif #endif
extern void set_die_routine(NORETURN_PTR void (*routine)(const char *err, va_list params)); extern void set_die_routine(NORETURN_PTR void (*routine)(const char *err, va_list params));

View File

@ -148,6 +148,7 @@ void NORETURN die_errno(const char *fmt, ...)
va_end(params); va_end(params);
} }
#undef error_errno
int error_errno(const char *fmt, ...) int error_errno(const char *fmt, ...)
{ {
char buf[1024]; char buf[1024];