Hello, I have few comments: PATCH 3: I would prefer to put '#define WIN32_LEAN_AND_MEAN' at beginning of the file before any other #include. This should prevent issues in future if some other header file is included before that define and would transitively include also windows.h.
PATCH 4: About storing "unsigned short cp" into mbstate_t. This seems to be incompatible change with msvcrt / UCRT. And I'm not sure if this is a good idea. For example it can break mixing of mingw-w64 mbrtowc function with any other msvcrt / UCRT function which is using mbstate_t. mbrtowc_cp: My original idea was to simplify code, remove unnecessary parts and do not statically link into every executable unused code. But I understand that for crtdll.dll the ___lc_codepage_func implementation can be slow. I did not think about it originally. If this is really a problem then we can revert it back, but ideally as internal symbol prefixed e.g. by mingw term. On Wednesday 24 September 2025 12:24:43 Kirill Makurin wrote: > Current implementation of mbrtowc incorrectly handles situations when its > first or second argument is NULL. See POSIX specification[1]. > > When first argument is NULL it must behave as usual, except that it produces > no output. Currently, it does not update conversion state in this case. > > When second argument is NULL, it must act as if was called as mbrtowc (NULL, > "", 1, state). Currently it simply puts `state` to initial conversion state. > > Fourth patch in this series makes detection of invalid conversion state > (optional POSIX feature) more robust. This may be a little overkill, but I > see no harm in doing so. > > Pali, remember there previously was mbrtowc_cp? I think we could return it. > crtdll.dll's ___lc_codepage_func seems to do the trick with strchr (setlocale > (LC_CTYPE, NULL), '.') and atoi to convert code page to int. I find it > unnecessary expensive to do on each call to mbrtowc from mbsrtowcs. > > - Kirill Makurin > > [1] https://pubs.opengroup.org/onlinepubs/9799919799/functions/mbrtowc.htm _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
