Eli Zaretskii wrote on 2026-02-08:
> > https://alpha.gnu.org/gnu/texinfo/texinfo-7.2.91.tar.xz
> 
> Thanks, this builds cleanly with mingw.org's MinGW, with a single
> problem in Gnulib's wctype.h.  It is the same problem as in the
> previous pretest, since this Gnulib header was not changed.  For the
> record, I fixed it locally like this:
> 
> --- ./gnulib/lib/wctype.in.h~0        2026-01-17 20:58:09.000000000 +0200
> +++ ./gnulib/lib/wctype.in.h  2026-02-08 11:45:40.995181800 +0200
> @@ -50,7 +50,7 @@
>   #error "Please include config.h first."
>  #endif
>  
> -#if @HAVE_WINT_T@
> +#if @HAVE_WINT_T@ && !defined _WCHAR_H
>  /* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.  */
>  # include <wchar.h>
>  #endif
> @@ -59,7 +59,7 @@
>     isw* functions in <ctype.h>, <wchar.h> as well as in <wctype.h>.  Include
>     <ctype.h>, <wchar.h> in advance to avoid rpl_ prefix being added to the
>     declarations.  */
> -#if defined _WIN32 && ! defined __CYGWIN__
> +#if defined _WIN32 && ! defined __CYGWIN__ && !defined _WCHAR_H
>  # include <ctype.h>
>  # include <wchar.h>
>  #endif

Good to know that this works. Since this is very fragile stuff, I prefer
adding an 'defined __MINGW32__' guard, so as to not affect other platforms.


2026-02-27  Bruno Haible  <[email protected]>

        wctype-h: Try to fix error regarding mbstate_t on very old mingw.
        Reported by Eli Zaretskii, see
        <https://lists.gnu.org/archive/html/bug-gnulib/2026-01/msg00206.html>.
        Based on proposed patch at
        <https://lists.gnu.org/archive/html/bug-gnulib/2026-02/msg00043.html>.
        * lib/wctype.in.h: Don't include <wchar.h> on mingw when it has already
        been at least partially processed.

diff --git a/lib/wctype.in.h b/lib/wctype.in.h
index 15f310ce91..6a3648dcd0 100644
--- a/lib/wctype.in.h
+++ b/lib/wctype.in.h
@@ -50,16 +50,19 @@
  #error "Please include config.h first."
 #endif
 
-#if @HAVE_WINT_T@
-/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.  */
+/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.
+   But don't do it in very old mingw, when <wchar.h> is already partially
+   processed.  */
+#if @HAVE_WINT_T@ && !(defined __MINGW32__ && defined _WCHAR_H)
 # include <wchar.h>
 #endif
 
 /* Native Windows (mingw, MSVC) have declarations of towupper, towlower, and
    isw* functions in <ctype.h>, <wchar.h> as well as in <wctype.h>.  Include
    <ctype.h>, <wchar.h> in advance to avoid rpl_ prefix being added to the
-   declarations.  */
-#if defined _WIN32 && ! defined __CYGWIN__
+   declarations.  But don't do it in very old mingw, when <wchar.h> is already
+   partially processed.  */
+#if defined _WIN32 && !defined __CYGWIN__ && !(defined __MINGW32__ && defined 
_WCHAR_H)
 # include <ctype.h>
 # include <wchar.h>
 #endif




Reply via email to