mirror of https://github.com/mpv-player/mpv
filter_sdh: optimize get_char_bytes
strlen is only relevant if the length is less than [1, 4], so this can be replaced with strnlen instead which will only traverse characters upto the maxlen insted of the entire string length. It also makes MPMIN unneeded. Also fix a comment.
This commit is contained in:
parent
13ed292ab0
commit
9bf4b9d5d4
|
@ -67,18 +67,18 @@ static inline int append(struct sd_filter *sd, struct buffer *buf, char c)
|
||||||
|
|
||||||
static int get_char_bytes(char *str)
|
static int get_char_bytes(char *str)
|
||||||
{
|
{
|
||||||
// In case the final character is non-ASCII.
|
// In case the first character is non-ASCII.
|
||||||
// Will only work with UTF-8 but you shouldn't be
|
// Will only work with UTF-8 but you shouldn't be
|
||||||
// using anything else anyway.
|
// using anything else anyway.
|
||||||
if (str && str[0]) {
|
if (str && str[0]) {
|
||||||
if (!(str[0] >> 7 & 1)) {
|
if (!(str[0] >> 7 & 1)) {
|
||||||
return MPMIN(strlen(str), 1);
|
return strnlen(str, 1);
|
||||||
} else if (!(str[0] >> 5 & 1)) {
|
} else if (!(str[0] >> 5 & 1)) {
|
||||||
return MPMIN(strlen(str), 2);
|
return strnlen(str, 2);
|
||||||
} else if (!(str[0] >> 4 & 1)) {
|
} else if (!(str[0] >> 4 & 1)) {
|
||||||
return MPMIN(strlen(str), 3);
|
return strnlen(str, 3);
|
||||||
} else if (!(str[0] >> 3 & 1)) {
|
} else if (!(str[0] >> 3 & 1)) {
|
||||||
return MPMIN(strlen(str), 4);
|
return strnlen(str, 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue