aboutsummaryrefslogtreecommitdiff
path: root/core/string_db.h
diff options
context:
space:
mode:
authorBernhard Liebl2017-12-16 15:31:30 +0100
committerBernhard Liebl2017-12-17 12:16:08 +0100
commitb47ce5e5d6299533dd8ccafc85d2d2283dd27da6 (patch)
treee8e338d4a09f5c88d2002965992cf0c1192e1e29 /core/string_db.h
parent19af42b35312f41de025728c4003045484cc1542 (diff)
downloadgodot-b47ce5e5d6299533dd8ccafc85d2d2283dd27da6.tar.gz
godot-b47ce5e5d6299533dd8ccafc85d2d2283dd27da6.tar.zst
godot-b47ce5e5d6299533dd8ccafc85d2d2283dd27da6.zip
Avoid string allocations in AlphCompare
Diffstat (limited to 'core/string_db.h')
-rw-r--r--core/string_db.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/core/string_db.h b/core/string_db.h
index de91e2abd..9665198ec 100644
--- a/core/string_db.h
+++ b/core/string_db.h
@@ -138,7 +138,22 @@ public:
_FORCE_INLINE_ bool operator()(const StringName &l, const StringName &r) const {
- return l.operator String() < r.operator String();
+ const char *l_cname = l._data ? l._data->cname : "";
+ const char *r_cname = r._data ? r._data->cname : "";
+
+ if (l_cname) {
+
+ if (r_cname)
+ return is_str_less(l_cname, r_cname);
+ else
+ return is_str_less(l_cname, r._data->name.ptr());
+ } else {
+
+ if (r_cname)
+ return is_str_less(l._data->name.ptr(), r_cname);
+ else
+ return is_str_less(l._data->name.ptr(), r._data->name.ptr());
+ }
}
};