summaryrefslogtreecommitdiffstats
path: root/Objects/abstract.c
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2004-01-04 11:00:08 (GMT)
committerRaymond Hettinger <python@rcn.com>2004-01-04 11:00:08 (GMT)
commitb86269db458f63b95be8017e47671092be3b48d1 (patch)
tree7d923c10b04385faf611a9df19be81f504a3e5d9 /Objects/abstract.c
parent4618cc09ec6b155c1570be07c7da37327f6e2293 (diff)
downloadcpython-b86269db458f63b95be8017e47671092be3b48d1.zip
cpython-b86269db458f63b95be8017e47671092be3b48d1.tar.gz
cpython-b86269db458f63b95be8017e47671092be3b48d1.tar.bz2
Apply pre-sizing optimization to a broader class of objects.
Formerly, the length was only fetched from sequence objects. Now, any object that reports its length can benefit from pre-sizing.
Diffstat (limited to 'Objects/abstract.c')
-rw-r--r--Objects/abstract.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/Objects/abstract.c b/Objects/abstract.c
index 1259ad4..342d971 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -1448,15 +1448,11 @@ PySequence_List(PyObject *v)
return NULL;
/* Guess a result list size. */
- n = -1; /* unknown */
- if (PySequence_Check(v) &&
- v->ob_type->tp_as_sequence->sq_length) {
- n = PySequence_Size(v);
- if (n < 0)
- PyErr_Clear();
- }
- if (n < 0)
+ n = PyObject_Size(v);
+ if (n < 0) {
+ PyErr_Clear();
n = 8; /* arbitrary */
+ }
result = PyList_New(n);
if (result == NULL) {
Py_DECREF(it);