#785543 libc6-dev: iswalnum(0x345) incorrectly return 1

Package:
libc6-dev
Source:
glibc
Description:
GNU C Library: Development Libraries and Header Files
Submitter:
Error of the function iswalnum for the character COMBINING GREEK YPOGEGRAMMENI
Date:
2019-10-26 08:45:04 UTC
Severity:
normal
#785543#5
Date:
2015-05-17 16:12:24 UTC
From:
To:
Dear Maintainer,

In Greek traditional text analysis, the iota subscript (U+0345) is often talked about as a "diacritic", see:

"http://en.wikipedia.org/wiki/Iota_subscript"

In the recourse: http://www.unicode.org/ucd/
I found two documents:
1. http://www.unicode.org/Public/UCD/latest/charts/CodeCharts.pdf
2. http://www.unicode.org/Public/UCD/latest/ucd/PropList.txt
In the first document in the section: "Combining Diacritical Marks" I found this character in the table. See at the screenshot https://yadi.sk/i/F_A04mo7gRMvd.
In the second document in line 752 we have:
0300..034E    ; Diacritic # Mn  [79] COMBINING GRAVE ACCENT..COMBINING UPWARDS ARROW BELOW

As a result, I think, it is pretty clear that iswalnum(0x345) should not return 1, but rather 0.

To test the function iswalnum(), I created a simple code:
===
#include <stdio.h>
#include <locale.h>
#include <wctype.h>
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>

#define HAVE_CONFIG_H 1

int main (int argc, char** argv)
{
        if (!setlocale(LC_CTYPE, "")){
                perror("setlocale(3) failed");
                return 1;
        }
        wchar_t wc;
        mbtowc (NULL, NULL, 0);
        mbtowc(&wc, argv[1], strlen(argv[1]));
        printf("iswalnum(0x%" PRIxMAX ")=%d\n", (intmax_t) wc, iswalnum(wc));
        return 0;
}
===

I put this code in a file test4iswalnum.c, then compiled:
$ gcc -Wall -o test4iswalnum test4iswalnum.c

Then I check the function iswalnum():
$ LC_CTYPE='C.UTF-8' ./test4iswalnum  ͅ
iswalnum(0x345)=1