summaryrefslogtreecommitdiff
path: root/Tools/gdb
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-08-29 11:39:48 +0300
committerSerhiy Storchaka <storchaka@gmail.com>2013-08-29 11:39:48 +0300
commit26fec2ec407e12424a45f98eb54290a9abb35b56 (patch)
treef92f4612ae6aba1c47475976b4e5de4c26236c4e /Tools/gdb
parent0c1afb9c8298bf5fad6a463dc620f923ca6ed38b (diff)
parentbb1ebd6ed7d5f6a0447c1e018e5b656acee7f571 (diff)
downloadcpython-26fec2ec407e12424a45f98eb54290a9abb35b56.tar.gz
Issue #18743: Fix references to non-existant "StringIO" module
in docstrings and comments.
Diffstat (limited to 'Tools/gdb')
-rw-r--r--Tools/gdb/libpython.py44
1 files changed, 22 insertions, 22 deletions
diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py
index a85f50595c..ee90c2f721 100644
--- a/Tools/gdb/libpython.py
+++ b/Tools/gdb/libpython.py
@@ -922,21 +922,26 @@ class PyFrameObjectPtr(PyObjectPtr):
class PySetObjectPtr(PyObjectPtr):
_typename = 'PySetObject'
+ @classmethod
+ def _dummy_key(self):
+ return gdb.lookup_global_symbol('_PySet_Dummy').value()
+
+ def __iter__(self):
+ dummy_ptr = self._dummy_key()
+ table = self.field('table')
+ for i in safe_range(self.field('mask') + 1):
+ setentry = table[i]
+ key = setentry['key']
+ if key != 0 and key != dummy_ptr:
+ yield PyObjectPtr.from_pyobject_ptr(key)
+
def proxyval(self, visited):
# Guard against infinite loops:
if self.as_address() in visited:
return ProxyAlreadyVisited('%s(...)' % self.safe_tp_name())
visited.add(self.as_address())
- members = []
- table = self.field('table')
- for i in safe_range(self.field('mask')+1):
- setentry = table[i]
- key = setentry['key']
- if key != 0:
- key_proxy = PyObjectPtr.from_pyobject_ptr(key).proxyval(visited)
- if key_proxy != '<dummy key>':
- members.append(key_proxy)
+ members = (key.proxyval(visited) for key in self)
if self.safe_tp_name() == 'frozenset':
return frozenset(members)
else:
@@ -965,18 +970,11 @@ class PySetObjectPtr(PyObjectPtr):
out.write('{')
first = True
- table = self.field('table')
- for i in safe_range(self.field('mask')+1):
- setentry = table[i]
- key = setentry['key']
- if key != 0:
- pyop_key = PyObjectPtr.from_pyobject_ptr(key)
- key_proxy = pyop_key.proxyval(visited) # FIXME!
- if key_proxy != '<dummy key>':
- if not first:
- out.write(', ')
- first = False
- pyop_key.write_repr(out, visited)
+ for key in self:
+ if not first:
+ out.write(', ')
+ first = False
+ key.write_repr(out, visited)
out.write('}')
if tp_name != 'set':
@@ -1160,7 +1158,9 @@ class PyUnicodeObjectPtr(PyObjectPtr):
# Convert the int code points to unicode characters, and generate a
# local unicode instance.
# This splits surrogate pairs if sizeof(Py_UNICODE) is 2 here (in gdb).
- result = u''.join([_unichr(ucs) for ucs in Py_UNICODEs])
+ result = u''.join([
+ (_unichr(ucs) if ucs <= 0x10ffff else '\ufffd')
+ for ucs in Py_UNICODEs])
return result
def write_repr(self, out, visited):