Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
494e836aae |
+9
-1
@@ -99,8 +99,16 @@ force_inline bool getCharacter(const KeyInfo &ki, int character,
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool operator<(const KeyInfo &lhs, const KeyInfo &rhs) {
|
bool operator<(const KeyInfo &lhs, const KeyInfo &rhs) {
|
||||||
|
// An empty key is a prefix of every key, so it sorts before any non-empty
|
||||||
|
// key. Handle empty keys up front: an empty std::span may have
|
||||||
|
// data() == nullptr, which must never be passed to memcmp.
|
||||||
|
if (lhs.key.size() == 0 || rhs.key.size() == 0) {
|
||||||
|
if (lhs.key.size() != rhs.key.size())
|
||||||
|
return lhs.key.size() < rhs.key.size();
|
||||||
|
return extra_ordering(lhs) < extra_ordering(rhs);
|
||||||
|
}
|
||||||
int i = std::min(lhs.key.size(), rhs.key.size());
|
int i = std::min(lhs.key.size(), rhs.key.size());
|
||||||
int c = i > 0 ? memcmp(lhs.key.data(), rhs.key.data(), i) : 0;
|
int c = memcmp(lhs.key.data(), rhs.key.data(), i);
|
||||||
if (c != 0)
|
if (c != 0)
|
||||||
return c < 0;
|
return c < 0;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user