libstdc++/77645 fix deque and vector xmethods for Python 3
PR libstdc++/77645 * python/libstdcxx/v6/xmethods.py (DequeWorkerBase.__init__) (DequeWorkerBase.index, VectorWorkerBase.get): Cast results of division to int to work with Python 3. From-SVN: r240241
This commit is contained in:
parent
1993ff76f5
commit
d0f5943566
|
@ -1,5 +1,10 @@
|
|||
2016-09-19 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
PR libstdc++/77645
|
||||
* python/libstdcxx/v6/xmethods.py (DequeWorkerBase.__init__)
|
||||
(DequeWorkerBase.index, VectorWorkerBase.get): Cast results of
|
||||
division to int to work with Python 3.
|
||||
|
||||
* testsuite/lib/gdb-test.exp (gdb-test): Fail if Python error occurs.
|
||||
|
||||
* python/libstdcxx/v6/printers.py (SingleObjContainerPrinter): Allow
|
||||
|
|
|
@ -165,7 +165,7 @@ class ArrayMethodsMatcher(gdb.xmethod.XMethodMatcher):
|
|||
class DequeWorkerBase(gdb.xmethod.XMethodWorker):
|
||||
def __init__(self, val_type):
|
||||
self._val_type = val_type
|
||||
self._bufsize = (512 / val_type.sizeof) or 1
|
||||
self._bufsize = int(512 / val_type.sizeof) or 1
|
||||
|
||||
def size(self, obj):
|
||||
first_node = obj['_M_impl']['_M_start']['_M_node']
|
||||
|
@ -176,7 +176,7 @@ class DequeWorkerBase(gdb.xmethod.XMethodWorker):
|
|||
|
||||
def index(self, obj, idx):
|
||||
first_node = obj['_M_impl']['_M_start']['_M_node']
|
||||
index_node = first_node + idx / self._bufsize
|
||||
index_node = first_node + int(idx / self._bufsize)
|
||||
return index_node[0][idx % self._bufsize]
|
||||
|
||||
class DequeEmptyWorker(DequeWorkerBase):
|
||||
|
@ -419,7 +419,7 @@ class VectorWorkerBase(gdb.xmethod.XMethodWorker):
|
|||
if self._val_type.code == gdb.TYPE_CODE_BOOL:
|
||||
start = obj['_M_impl']['_M_start']['_M_p']
|
||||
bit_size = start.dereference().type.sizeof * 8
|
||||
valp = start + index / bit_size
|
||||
valp = start + int(index / bit_size)
|
||||
offset = index % bit_size
|
||||
return (valp.dereference() & (1 << offset)) > 0
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue