silence some -Wuninitialized false positives
There are a few error functions that simply wrap error() and provide a standardized message text. Like error(), they always return -1; knowing that can help the compiler silence some false positive -Wuninitialized warnings. One strategy would be to just declare these as inline in the header file so that the compiler can see that they always return -1. However, gcc does not always inline them (e.g., it will not inline opterror, even with -O3), which renders our change pointless. Instead, let's follow the same route we did with error() in the last patch, and define a macro that makes the constant return value obvious to the compiler. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									e208f9cc75
								
							
						
					
					
						commit
						a469a10193
					
				
							
								
								
									
										3
									
								
								cache.h
								
								
								
								
							
							
						
						
									
										3
									
								
								cache.h
								
								
								
								
							|  | @ -1136,6 +1136,9 @@ extern int check_repository_format_version(const char *var, const char *value, v | ||||||
| extern int git_env_bool(const char *, int); | extern int git_env_bool(const char *, int); | ||||||
| extern int git_config_system(void); | extern int git_config_system(void); | ||||||
| extern int config_error_nonbool(const char *); | extern int config_error_nonbool(const char *); | ||||||
|  | #ifdef __GNUC__ | ||||||
|  | #define config_error_nonbool(s) (config_error_nonbool(s), -1) | ||||||
|  | #endif | ||||||
| extern const char *get_log_output_encoding(void); | extern const char *get_log_output_encoding(void); | ||||||
| extern const char *get_commit_output_encoding(void); | extern const char *get_commit_output_encoding(void); | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								config.c
								
								
								
								
							
							
						
						
									
										1
									
								
								config.c
								
								
								
								
							|  | @ -1660,6 +1660,7 @@ int git_config_rename_section(const char *old_name, const char *new_name) | ||||||
|  * Call this to report error for your variable that should not |  * Call this to report error for your variable that should not | ||||||
|  * get a boolean value (i.e. "[my] var" means "true"). |  * get a boolean value (i.e. "[my] var" means "true"). | ||||||
|  */ |  */ | ||||||
|  | #undef config_error_nonbool | ||||||
| int config_error_nonbool(const char *var) | int config_error_nonbool(const char *var) | ||||||
| { | { | ||||||
| 	return error("Missing value for '%s'", var); | 	return error("Missing value for '%s'", var); | ||||||
|  |  | ||||||
|  | @ -18,15 +18,6 @@ int optbug(const struct option *opt, const char *reason) | ||||||
| 	return error("BUG: switch '%c' %s", opt->short_name, reason); | 	return error("BUG: switch '%c' %s", opt->short_name, reason); | ||||||
| } | } | ||||||
|  |  | ||||||
| int opterror(const struct option *opt, const char *reason, int flags) |  | ||||||
| { |  | ||||||
| 	if (flags & OPT_SHORT) |  | ||||||
| 		return error("switch `%c' %s", opt->short_name, reason); |  | ||||||
| 	if (flags & OPT_UNSET) |  | ||||||
| 		return error("option `no-%s' %s", opt->long_name, reason); |  | ||||||
| 	return error("option `%s' %s", opt->long_name, reason); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| static int get_arg(struct parse_opt_ctx_t *p, const struct option *opt, | static int get_arg(struct parse_opt_ctx_t *p, const struct option *opt, | ||||||
| 		   int flags, const char **arg) | 		   int flags, const char **arg) | ||||||
| { | { | ||||||
|  | @ -594,3 +585,12 @@ static int parse_options_usage(struct parse_opt_ctx_t *ctx, | ||||||
| 	return usage_with_options_internal(ctx, usagestr, opts, 0, err); | 	return usage_with_options_internal(ctx, usagestr, opts, 0, err); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | #undef opterror | ||||||
|  | int opterror(const struct option *opt, const char *reason, int flags) | ||||||
|  | { | ||||||
|  | 	if (flags & OPT_SHORT) | ||||||
|  | 		return error("switch `%c' %s", opt->short_name, reason); | ||||||
|  | 	if (flags & OPT_UNSET) | ||||||
|  | 		return error("option `no-%s' %s", opt->long_name, reason); | ||||||
|  | 	return error("option `%s' %s", opt->long_name, reason); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -177,6 +177,10 @@ extern NORETURN void usage_msg_opt(const char *msg, | ||||||
|  |  | ||||||
| extern int optbug(const struct option *opt, const char *reason); | extern int optbug(const struct option *opt, const char *reason); | ||||||
| extern int opterror(const struct option *opt, const char *reason, int flags); | extern int opterror(const struct option *opt, const char *reason, int flags); | ||||||
|  | #ifdef __GNUC__ | ||||||
|  | #define opterror(o,r,f) (opterror((o),(r),(f)), -1) | ||||||
|  | #endif | ||||||
|  |  | ||||||
| /*----- incremental advanced APIs -----*/ | /*----- incremental advanced APIs -----*/ | ||||||
|  |  | ||||||
| enum { | enum { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Jeff King
						Jeff King