diff options
| -rw-r--r-- | gdb/kakoune.py | 15 | ||||
| -rw-r--r-- | src/string.hh | 2 |
2 files changed, 10 insertions, 7 deletions
diff --git a/gdb/kakoune.py b/gdb/kakoune.py index 726fc05a..6988e562 100644 --- a/gdb/kakoune.py +++ b/gdb/kakoune.py @@ -85,13 +85,16 @@ class String: self.val = val def to_string(self): - data = self.val["m_data"] - if (data["u"]["s"]["size"] & 1) != 1: - ptr = data["u"]["l"]["ptr"] - len = data["u"]["l"]["size"] + data_u = self.val["m_data"]["u"] + long = data_u["l"] + short = data_u["s"] + if (long["mode"] & long["active_mask"]) != 0: + ptr = long["ptr"] + len = long["size"] else: - ptr = data["u"]["s"]["string"] - len = data["u"]["s"]["size"] >> 1 + ptr = short["string"] + short_capacity = short + len = short["capacity"] - short["remaining_size"] return "\"%s\"" % (ptr.string("utf-8", "ignore", len)) diff --git a/src/string.hh b/src/string.hh index 677f01f5..fd1e5b74 100644 --- a/src/string.hh +++ b/src/string.hh @@ -184,7 +184,7 @@ public: Data& operator=(const Data& other); Data& operator=(Data&& other) noexcept; - bool is_long() const { return (u.l.mode& Long::active_mask) > 0; } + bool is_long() const { return (u.l.mode & Long::active_mask) != 0; } size_t size() const { return is_long() ? u.l.size : (Short::capacity - u.s.remaining_size); } size_t capacity() const { return is_long() ? u.l.capacity : Short::capacity; } |
