From
if ( isalnumW ( wc ) ) return wc;
    for ( i = 0; i < 17; i++ )
To
if ( isalnumW ( wc ) ) return wc;
    for ( i = 0; i < 16; i++ )
and the original version was wrong,too.
It counts the NULL of the end.