diff options
author | Niklas Haas <git@haasn.xyz> | 2017-07-27 00:09:00 +0200 |
---|---|---|
committer | Niklas Haas <git@haasn.xyz> | 2017-08-03 21:48:25 +0200 |
commit | 779031ad8f3b74035b8e64a2353a52557d7b8ece (patch) | |
tree | 957bb148edf08e93ad4e80db4f4b0389dbbf8a1e /misc | |
parent | fee6b287a559084062d179974816fd922dc93a4f (diff) | |
download | mpv-779031ad8f3b74035b8e64a2353a52557d7b8ece.tar.bz2 mpv-779031ad8f3b74035b8e64a2353a52557d7b8ece.tar.xz |
bstr: short-circuit bstr_equals on pointer equality
More efficient in cases where we're comparing a bstr against itself,
which can happen in e.g. the ICC profile code.
Diffstat (limited to 'misc')
-rw-r--r-- | misc/bstr.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/misc/bstr.h b/misc/bstr.h index 199f300ba1..d6e2fdc18e 100644 --- a/misc/bstr.h +++ b/misc/bstr.h @@ -193,7 +193,10 @@ static inline int bstrcmp0(struct bstr str1, const char *str2) static inline bool bstr_equals(struct bstr str1, struct bstr str2) { - return str1.len == str2.len && bstrcmp(str1, str2) == 0; + if (str1.len != str2.len) + return false; + + return str1.start == str2.start || bstrcmp(str1, str2) == 0; } static inline bool bstr_equals0(struct bstr str1, const char *str2) |