summaryrefslogtreecommitdiffstats
path: root/Objects/abstract.c
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2001-09-10 23:37:46 (GMT)
committerTim Peters <tim.peters@gmail.com>2001-09-10 23:37:46 (GMT)
commit4c3a0a35cd80a0abb9628dc8d4ade911fe2d5015 (patch)
tree49f95befcf411f7d2dd31df46cd0e67c4353a8e7 /Objects/abstract.c
parentcaaff8d95d750afb4d66b9caece087b191219eb7 (diff)
downloadcpython-4c3a0a35cd80a0abb9628dc8d4ade911fe2d5015.zip
cpython-4c3a0a35cd80a0abb9628dc8d4ade911fe2d5015.tar.gz
cpython-4c3a0a35cd80a0abb9628dc8d4ade911fe2d5015.tar.bz2
More on SF bug [#460020] bug or feature: unicode() and subclasses.
tuple(i) repaired to return a true tuple when i is an instance of a tuple subclass. Added PyTuple_CheckExact macro. PySequence_Tuple(): if a tuple-like object isn't exactly a tuple, it's not safe to return the object as-is -- make a new tuple of it instead.
Diffstat (limited to 'Objects/abstract.c')
-rw-r--r--Objects/abstract.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/Objects/abstract.c b/Objects/abstract.c
index 37f7eea..3609948 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -1235,7 +1235,11 @@ PySequence_Tuple(PyObject *v)
return null_error();
/* Special-case the common tuple and list cases, for efficiency. */
- if (PyTuple_Check(v)) {
+ if (PyTuple_CheckExact(v)) {
+ /* Note that we can't know whether it's safe to return
+ a tuple *subclass* instance as-is, hence the restriction
+ to exact tuples here. In contrasts, lists always make
+ a copy, so there's need for exactness below. */
Py_INCREF(v);
return v;
}