diff options
| author | Tyge Løvset <[email protected]> | 2022-08-08 21:20:57 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2022-08-08 21:20:57 +0200 |
| commit | 8e2f3b4aef0b5e8de66d02ca6268c13846cc05a0 (patch) | |
| tree | 928f33c35239fc6fd8beb1da0518bf619d3ef398 /src | |
| parent | c9e0c46d29db9c2a85154c9c6a75ce0d2e2180ff (diff) | |
| download | STC-modified-8e2f3b4aef0b5e8de66d02ca6268c13846cc05a0.tar.gz STC-modified-8e2f3b4aef0b5e8de66d02ca6268c13846cc05a0.zip | |
Final fix on icmp().
Diffstat (limited to 'src')
| -rw-r--r-- | src/utf8code.c | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/src/utf8code.c b/src/utf8code.c index 28c101fa..1790ad62 100644 --- a/src/utf8code.c +++ b/src/utf8code.c @@ -102,29 +102,18 @@ uint32_t utf8_toupper(uint32_t c) { } return c; } -/* -int utf8_icmp(const char* s1, const char* s2) { - utf8_decode_t d1 = {.state=0}, d2 = {.state=0}; - for (;;) { - do { utf8_decode(&d1, (uint8_t)*s1++); } while (d1.state); - do { utf8_decode(&d2, (uint8_t)*s2++); } while (d2.state); - int32_t c = utf8_casefold(d1.codep) - utf8_casefold(d2.codep); - if (c || !s2[-1]) - return c; - } -} -*/ -int utf8_icmp_sv(size_t u8max, const csview s1, const csview s2) { + +int utf8_icmp_sv(const csview s1, const csview s2) { utf8_decode_t d1 = {.state=0}, d2 = {.state=0}; size_t j1 = 0, j2 = 0; - while (u8max-- && ((j1 < s1.size) & (j2 < s2.size))) { + while ((j1 < s1.size) & (j2 < s2.size)) { do { utf8_decode(&d1, (uint8_t)s1.str[j1++]); } while (d1.state); do { utf8_decode(&d2, (uint8_t)s2.str[j2++]); } while (d2.state); int32_t c = utf8_casefold(d1.codep) - utf8_casefold(d2.codep); if (c || !s2.str[j2 - 1]) // OK if s1.size / s2.size are npos return c; } - return (j2 < s2.size) - (j1 < s1.size); + return 0; } bool utf8_isupper(uint32_t c) { |
