summaryrefslogtreecommitdiffstats
path: root/misc
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.xyz>2017-07-27 00:09:00 +0200
committerNiklas Haas <git@haasn.xyz>2017-08-03 21:48:25 +0200
commit779031ad8f3b74035b8e64a2353a52557d7b8ece (patch)
tree957bb148edf08e93ad4e80db4f4b0389dbbf8a1e /misc
parentfee6b287a559084062d179974816fd922dc93a4f (diff)
downloadmpv-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.h5
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)