From: Johannes Sixt <j6t@xxxxxxxx> compat/regexec.c had a weird combination of function declaration in ANSI style and function definition in K&R style, for example: static unsigned re_copy_regs (struct re_registers *regs, regmatch_t *pmatch, int nregs, int regs_allocated) internal_function; static unsigned re_copy_regs (regs, pmatch, nregs, regs_allocated) struct re_registers *regs; regmatch_t *pmatch; int nregs, regs_allocated; { ... } with this #define: #ifndef _LIBC # ifdef __i386__ # define internal_function __attribute ((regparm (3), stdcall)) # else # define internal_function # endif #endif The original version as shown above was fine, but with the ANSIfied function definition and in the case where internal_function is not empty, gcc identifies the declaration and definition as different and bails out. Adding internal_function to the definition doesn't help (it results in a syntax error); hence, remove it from the subset of declarations that gcc flags as erroneous. Signed-off-by: Johannes Sixt <j6t@xxxxxxxx> --- Am 8/25/2010 20:24, schrieb Karsten Blees: > this doesn't compile if internal_function is #defined non-empty (e.g. on > mingw/msysgit). The old-style definitions work. > > In file included from compat/regex/regex.c:78: > compat/regex/regexec.c:357: error: conflicting types for 're_search_2_stub' > compat/regex/regexec.c:44: note: previous declaration of 're_search_2_stub' was > here Here's a fix. compat/regex/regexec.c | 11 +++++------ 1 files changed, 5 insertions(+), 6 deletions(-) diff --git a/compat/regex/regexec.c b/compat/regex/regexec.c index b49585a..0194965 100644 --- a/compat/regex/regexec.c +++ b/compat/regex/regexec.c @@ -40,20 +40,19 @@ static reg_errcode_t re_search_internal (const regex_t *preg, const char *string, int length, int start, int range, int stop, size_t nmatch, regmatch_t pmatch[], - int eflags) internal_function; + int eflags); static int re_search_2_stub (struct re_pattern_buffer *bufp, const char *string1, int length1, const char *string2, int length2, int start, int range, struct re_registers *regs, - int stop, int ret_len) internal_function; + int stop, int ret_len); static int re_search_stub (struct re_pattern_buffer *bufp, const char *string, int length, int start, int range, int stop, struct re_registers *regs, - int ret_len) internal_function; + int ret_len); static unsigned re_copy_regs (struct re_registers *regs, regmatch_t *pmatch, - int nregs, int regs_allocated) internal_function; -static reg_errcode_t prune_impossible_nodes (re_match_context_t *mctx) - internal_function; + int nregs, int regs_allocated); +static reg_errcode_t prune_impossible_nodes (re_match_context_t *mctx); static int check_matching (re_match_context_t *mctx, int fl_longest_match, int *p_match_first) internal_function; static int check_halt_state_context (const re_match_context_t *mctx, -- 1.7.2.2.1305.g4e2a -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html