git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/3] Revert "make error()'s constant return value more visible"

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
May 4, 2014, 06:12 UTC
Message-ID
<1399183975-2346-2-git-send-email-felipe.contreras@gmail.com>
In-Reply-To
<1399183975-2346-1-git-send-email-felipe.contreras@gmail.com>
In recent versions of gcc (4.9.0), we get hundreds of these:
  advice.c: In function ‘error_resolve_conflict’:
  advice.c:79:69: warning: right-hand operand of comma expression has no effect [-Wunused-value]
    error("'%s' is not possible because you have unmerged files.", me);
                                                                     ^
The original patch intended to help in situations like this:
  if (error(...))
    /* do stuff */
However, when there's no conditional statement this gets translated to:
  (error(..), 1);
And the right hand of the expression has no effect.

So it looks like gcc is smarter now, and in trying to fix a few warnings we generated hundreds more.

This reverts commit e208f9cc7574f5980faba498d0aa30b4defeb34f.
Conflicts:
	git-compat-util.h
---
 git-compat-util.h | 11 -----------
 usage.c           |  1 -
 2 files changed, 12 deletions(-)
diff --git a/git-compat-util.h b/git-compat-util.h
index f6d3a46..b4242e4 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -323,17 +323,6 @@ extern void warning(const char *err, ...) __attribute__((format (printf, 1, 2)))
 #include <openssl/x509v3.h>
 #endif /* NO_OPENSSL */
 
-/*
- * Let callers be aware of the constant return value; this can help
- * gcc with -Wuninitialized analysis. We restrict this trick to gcc, though,
- * because some compilers may not support variadic macros. Since we're only
- * trying to help gcc, anyway, it's OK; other compilers will fall back to
- * using the function as usual.
- */
-#if defined(__GNUC__) && ! defined(__clang__)
-#define error(...) (error(__VA_ARGS__), -1)
-#endif
-
 extern void set_die_routine(NORETURN_PTR void (*routine)(const char *err, va_list params));
 extern void set_error_routine(void (*routine)(const char *err, va_list params));
 extern void set_die_is_recursing_routine(int (*routine)(void));
diff --git a/usage.c b/usage.c
index ed14645..9d2961e 100644
--- a/usage.c
+++ b/usage.c
@@ -138,7 +138,6 @@ void NORETURN die_errno(const char *fmt, ...)
 	va_end(params);
 }
 
-#undef error
 int error(const char *err, ...)
 {
 	va_list params;
-- 
1.9.2+fc1.20.g204a630
Previous: Felipe ContrerasNext: Jeff King
Message 2 of 26 in “Fix a ton of compiler warnings”
  1. 0/3 Fix a ton of compiler warningsFelipe Contreras, May 4, 2014
  2. 1/3 Revert "make error()'s constant return value more visible"Felipe Contreras, May 4, 2014
  3. Jeff KingMay 5, 2014
  4. Felipe ContrerasMay 5, 2014
  5. Jeff KingMay 5, 2014
  6. Felipe ContrerasMay 5, 2014
  7. Jeff KingMay 5, 2014
  8. Felipe ContrerasMay 5, 2014
  9. Jeff KingMay 5, 2014
  10. 1/2 inline constant return from error() functionJeff King, May 6, 2014
  11. Junio C HamanoMay 6, 2014
  12. Jeff KingMay 7, 2014
  13. Junio C HamanoMay 11, 2014
  14. Jeff KingMay 12, 2014
  15. Felipe ContrerasMay 11, 2014
  16. Jonathan NiederMay 12, 2014
  17. Jeff KingMay 12, 2014
  18. 2/2 let clang use the constant-return error() macroJeff King, May 6, 2014
  19. 2/3 Revert "silence some -Wuninitialized false positives"Felipe Contreras, May 4, 2014
  20. 3/3 Silence a bunch of format-zero-length warningsFelipe Contreras, May 4, 2014
  21. brian m. carlsonMay 4, 2014
  22. Felipe ContrerasMay 4, 2014
  23. Jeff KingMay 5, 2014
  24. Junio C HamanoMay 7, 2014
  25. Heiko VoigtMay 7, 2014
  26. Junio C HamanoMay 7, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.