Hi,

The function towlower doesn't work with locales diffrent from C.
Issue was introduced in this commit:
https://cgit.openadk.org/cgi/cgit/uclibc-ng.git/commit/?id=8cde3a9bf2856dcb9a759dec7ecb04a68e712254
Call to setlocale is needed for correct generation of the table uplow_diff.
I received the compile time error "range assumption error" after uncommenting the call.
Similar problem described here:
http://lists.uclibc.org/pipermail/uclibc/2015-March/048852.html

The attached patch fix the problem by using int32_t values.

Test program:
$ cat test.c
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
#include <wctype.h>

int main(int argc, char *argv[])
{
int i = 0;
wchar_t str[] = L"ТЕСТОВАЯ СТРОКА";
wchar_t c;

setlocale(LC_ALL, "ru_RU.utf-8");

wprintf(L"Input:\t\"%ls\"\n", str);
wprintf(L"Output:\t\"");

while (str[i]) {
c = str[i];
putwchar(towlower(c));
i++;
}

wprintf(L"\"\n");

return 0;
}

Output (without patch):
$ ./test
Input: "ТЕСТОВАЯ СТРОКА"
Output: "ТЕСТОВАЯ СТРОКА"

Output (with patch):
$ ./test
Input: "ТЕСТОВАЯ СТРОКА"
Output: "тестовая строка"

--
Best regards,
Eugene