diff options
| author | Bernhard Liebl | 2017-12-16 15:31:30 +0100 |
|---|---|---|
| committer | Bernhard Liebl | 2017-12-17 12:16:08 +0100 |
| commit | b47ce5e5d6299533dd8ccafc85d2d2283dd27da6 (patch) | |
| tree | e8e338d4a09f5c88d2002965992cf0c1192e1e29 /core/string_db.h | |
| parent | 19af42b35312f41de025728c4003045484cc1542 (diff) | |
| download | godot-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.h | 17 |
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()); + } } }; |
