toupper(c lowercase with no upper case) -> c not 0. Reference: /n/atom/patch/applied/runetyperedux Date: Thu Mar 13 17:24:18 CET 2014 Signed-off-by: quanstro@quanstro.net --- /sys/src/libc/port/runetype.c Thu Mar 13 17:23:48 2014 +++ /sys/src/libc/port/runetype.c Thu Mar 13 17:23:48 2014 @@ -31,7 +31,7 @@ if(p && c >= p[0] && c <= p[1]) return p[2] + (c - p[0]); p = bsearch(c, __tolower1, nelem(__tolower1)/2, 2); - if(p && c == p[0]) + if(p && c == p[0] && p[1] != 0) return p[1]; return c; } @@ -45,7 +45,7 @@ if(p && c >= p[0] && c <= p[1]) return p[2] + (c - p[0]); p = bsearch(c, __toupper1, nelem(__toupper1)/2, 2); - if(p && c == p[0]) + if(p && c == p[0] && p[1] != 0) return p[1]; return c; } @@ -56,7 +56,7 @@ Rune *p; p = bsearch(c, __totitle1, nelem(__totitle1)/2, 2); - if(p && c == p[0]) + if(p && c == p[0] && p[1] != 0) return p[1]; return c; }