diff --git a/Include/tupleobject.h b/Include/tupleobject.h index 9a614846ff6..bf208547d49 100644 --- a/Include/tupleobject.h +++ b/Include/tupleobject.h @@ -33,7 +33,7 @@ extern DL_IMPORT(int) PyTuple_Size(PyObject *); extern DL_IMPORT(PyObject *) PyTuple_GetItem(PyObject *, int); extern DL_IMPORT(int) PyTuple_SetItem(PyObject *, int, PyObject *); extern DL_IMPORT(PyObject *) PyTuple_GetSlice(PyObject *, int, int); -extern DL_IMPORT(int) _PyTuple_Resize(PyObject **, int, int); +extern DL_IMPORT(int) _PyTuple_Resize(PyObject **, int); /* Macro, trading safety for speed */ #define PyTuple_GET_ITEM(op, i) (((PyTupleObject *)(op))->ob_item[i]) diff --git a/Misc/NEWS b/Misc/NEWS index b9601175855..be58d95fea1 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -155,6 +155,12 @@ New platforms - Python should compile and run out of the box using the Borland C compiler (under Windows), thanks to Stephen Hansen. +C API + +- Removed the unused last_is_sticky argument from the internal + _PyTuple_Resize(). If this affects you, you were cheating. + + What's New in Python 2.1 (final)? ================================= diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 86b5c220e31..ceac18bbb8f 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -1851,7 +1851,7 @@ _bump(FlattenContext* context, int size) context->maxsize = maxsize; - return _PyTuple_Resize(&context->tuple, maxsize, 0) >= 0; + return _PyTuple_Resize(&context->tuple, maxsize) >= 0; } static int @@ -1935,7 +1935,7 @@ Tkinter_Flatten(PyObject* self, PyObject* args) if (!_flatten1(&context, item,0)) return NULL; - if (_PyTuple_Resize(&context.tuple, context.size, 0)) + if (_PyTuple_Resize(&context.tuple, context.size)) return NULL; return context.tuple; diff --git a/Objects/abstract.c b/Objects/abstract.c index c1d77897478..63fe7d51225 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -1220,7 +1220,7 @@ PySequence_Tuple(PyObject *v) n += 10; else n += 100; - if (_PyTuple_Resize(&result, n, 0) != 0) { + if (_PyTuple_Resize(&result, n) != 0) { Py_DECREF(item); goto Fail; } @@ -1230,7 +1230,7 @@ PySequence_Tuple(PyObject *v) /* Cut tuple back if guess was too large. */ if (j < n && - _PyTuple_Resize(&result, j, 0) != 0) + _PyTuple_Resize(&result, j) != 0) goto Fail; Py_DECREF(it); diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c index 16e0b12666f..94f1859b8c3 100644 --- a/Objects/tupleobject.c +++ b/Objects/tupleobject.c @@ -488,11 +488,10 @@ PyTypeObject PyTuple_Type = { is only one module referencing the object. You can also think of it as creating a new tuple object and destroying the old one, only more efficiently. In any case, don't use this if the tuple may already be - known to some other part of the code. The last_is_sticky is not used - and must always be false. */ + known to some other part of the code. */ int -_PyTuple_Resize(PyObject **pv, int newsize, int last_is_sticky) +_PyTuple_Resize(PyObject **pv, int newsize) { register PyTupleObject *v; register PyTupleObject *sv; @@ -500,7 +499,7 @@ _PyTuple_Resize(PyObject **pv, int newsize, int last_is_sticky) int sizediff; v = (PyTupleObject *) *pv; - if (v == NULL || !PyTuple_Check(v) || last_is_sticky || + if (v == NULL || !PyTuple_Check(v) || (v->ob_size != 0 && v->ob_refcnt != 1)) { *pv = 0; Py_XDECREF(v); diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 78e2f370b89..1e9868af14f 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -2329,7 +2329,7 @@ filtertuple(PyObject *func, PyObject *tuple) } } - if (_PyTuple_Resize(&result, j, 0) < 0) + if (_PyTuple_Resize(&result, j) < 0) return NULL; return result;