Matthias Kaehlcke <matthias at kaehlcke dot net> writes:

A compilation of an ARM toolchain with glibc 2.7 using crosstool-ng
failed with a gcc error in glibc-2.7/posix/regex_internal.c, more
concretly in the function build_wcs_upper_buffer(). The return type of
the function prototype in regex_internal.h doesn't correspond with the
return type of this function in regex_internal.c.

The attached patch corrects the return type of the function prototype
in regex_internal.h

--- glibc-2.7/posix/regex_internal.h.org	2008-05-30 11:16:01.000000000 +0200
+++ glibc-2.7/posix/regex_internal.h	2008-05-30 11:16:35.000000000 +0200
@@ -391,7 +391,7 @@
      internal_function;
 # ifdef RE_ENABLE_I18N
 static void build_wcs_buffer (re_string_t *pstr) internal_function;
-static int build_wcs_upper_buffer (re_string_t *pstr) internal_function;
+static reg_errcode_t build_wcs_upper_buffer (re_string_t *pstr) internal_function;
 # endif /* RE_ENABLE_I18N */
 static void build_upper_buffer (re_string_t *pstr) internal_function;
 static void re_string_translate_buffer (re_string_t *pstr) internal_function;
