• Show log

    Commit

  • Hash : b5586a6c
    Author : Ran Benita
    Date : 2016-12-02T22:15:19

    keysym: fix locale dependence in xkb_keysym_from_name()
    
    We currently use strcasecmp, which is locale-dependent. In particular,
    one well-known surprise even if restricted just ASCII input is found in
    the tr_TR (Turkish) locale, see e.g.
    https://msdn.microsoft.com/en-us/library/ms973919.aspx#stringsinnet20_topic5
    
    We have known to avoid locale-dependent functions before, but in this
    case, we forgot.
    
    Fix it by implementing our own simple ASCII-only strcasecmp/strncasecmp.
    Might have been possible to use strcasecmp_l() with the C locale, but
    went the easy route.
    
    Side advantage is that even this non-optimized version is faster than
    the optimized libc one (__strcasecmp_l_sse42) since it doesn't need to
    do the locale stuff. xkb_keysym_from_name(), which uses strcasecmp
    heavily, becomes faster, and so for example Compose file parsing, which
    uses xkb_keysym_from_name() heavily, becomes ~20% faster.
    
    Resolves https://github.com/xkbcommon/libxkbcommon/issues/42
    Signed-off-by: Ran Benita <ran234@gmail.com>
    

  • Properties

  • Git HTTP https://git.kmx.io/kc3-lang/libxkbcommon.git
    Git SSH git@git.kmx.io:kc3-lang/libxkbcommon.git
    Public access ? public
    Description
    Users
    thodg_w kc3_lang_org thodg_l thodg_m www_kmx_io thodg
    Tags