update debug providers to match new RawVec capacity field
This commit is contained in:
parent
6a2f44e9d8
commit
81997094e6
@ -154,7 +154,11 @@ class StdVecDequeProvider(printer_base):
|
||||
self._valobj = valobj
|
||||
self._head = int(valobj["head"])
|
||||
self._size = int(valobj["len"])
|
||||
self._cap = int(valobj["buf"]["cap"])
|
||||
# BACKCOMPAT: rust 1.75
|
||||
cap = valobj["buf"]["cap"]
|
||||
if cap.type.code != gdb.TYPE_CODE_INT:
|
||||
cap = cap[ZERO_FIELD]
|
||||
self._cap = int(cap)
|
||||
self._data_ptr = unwrap_unique_or_non_null(valobj["buf"]["ptr"])
|
||||
|
||||
def to_string(self):
|
||||
|
@ -267,7 +267,8 @@ class StdVecSyntheticProvider:
|
||||
"""Pretty-printer for alloc::vec::Vec<T>
|
||||
|
||||
struct Vec<T> { buf: RawVec<T>, len: usize }
|
||||
struct RawVec<T> { ptr: Unique<T>, cap: usize, ... }
|
||||
rust 1.75: struct RawVec<T> { ptr: Unique<T>, cap: usize, ... }
|
||||
rust 1.76: struct RawVec<T> { ptr: Unique<T>, cap: Cap(usize), ... }
|
||||
rust 1.31.1: struct Unique<T: ?Sized> { pointer: NonZero<*const T>, ... }
|
||||
rust 1.33.0: struct Unique<T: ?Sized> { pointer: *const T, ... }
|
||||
rust 1.62.0: struct Unique<T: ?Sized> { pointer: NonNull<T>, ... }
|
||||
@ -390,7 +391,10 @@ class StdVecDequeSyntheticProvider:
|
||||
self.head = self.valobj.GetChildMemberWithName("head").GetValueAsUnsigned()
|
||||
self.size = self.valobj.GetChildMemberWithName("len").GetValueAsUnsigned()
|
||||
self.buf = self.valobj.GetChildMemberWithName("buf")
|
||||
self.cap = self.buf.GetChildMemberWithName("cap").GetValueAsUnsigned()
|
||||
cap = self.buf.GetChildMemberWithName("cap")
|
||||
if cap.GetType().num_fields == 1:
|
||||
cap = cap.GetChildAtIndex(0)
|
||||
self.cap = cap.GetValueAsUnsigned()
|
||||
|
||||
self.data_ptr = unwrap_unique_or_non_null(self.buf.GetChildMemberWithName("ptr"))
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user