Upstream maintainer here. I added the missing include.
But I am unsure what to do about the other point (regarding gcc -Wconversion). There is an analogous situation with islower() and similar functions, where the solution is described by an update I recently added for the upcoming upstream release The standards require that the argument c for these functions is either EOF or a value that is representable in the type unsigned char. If the argument c is of type char, it must be cast to unsigned char, as in the following example: char c; ... res = toupper((unsigned char) c); This is necessary because char may be the equivalent signed char, in which case a byte where the top bit is set would be sign extended when converting to int, yielding a value that is outside the range of unsigned char. However, we don't have a similar solution for iswlower(), because there is no "(unsigned wchar_t)" cast. And casting to (wint_t) seems incorrect to me, because if wchar_t is a signed type smaller than wint_t, then sign extension could occur. I could be wrong, but it seems like an implementation bug that one of these types is signed and the other is unsigned. Cheers, Michael