Hello.
I was reading source code for bltinmodule.c and found probably erroneus
stuff in filter function. I'm newbie to python inners and don't know if
attached code is worth for a patch submission.
I would appreciate if someone could take a look at it and if it's ok
then i'll make submission, otherwise just drop it.
TIA
Ruslan
Index: bltinmodule.c
===
RCS file: /cvsroot/python/python/dist/src/Python/bltinmodule.c,v
retrieving revision 2.321
diff -c -r2.321 bltinmodule.c
*** bltinmodule.c 11 Mar 2005 06:49:40 - 2.321
--- bltinmodule.c 19 Jul 2005 21:02:30 -
***
*** 224,231
/* Pre-allocate argument list tuple. */
arg = PyTuple_New(1);
! if (arg == NULL)
! goto Fail_arg;
/* Get a result list. */
if (PyList_Check(seq) && seq->ob_refcnt == 1) {
--- 224,233
/* Pre-allocate argument list tuple. */
arg = PyTuple_New(1);
! if (arg == NULL) {
! Py_DECREF(it);
! return NULL;
! }
/* Get a result list. */
if (PyList_Check(seq) && seq->ob_refcnt == 1) {
***
*** 295,301
Py_DECREF(result);
Fail_it:
Py_DECREF(it);
- Fail_arg:
Py_DECREF(arg);
return NULL;
}
--- 297,302
***
*** 525,531
return NULL;
}
if (globals != Py_None && !PyDict_Check(globals)) {
! PyErr_SetString(PyExc_TypeError, PyMapping_Check(globals) ?
"globals must be a real dict; try eval(expr, {}, mapping)"
: "globals must be a dict");
return NULL;
--- 526,532
return NULL;
}
if (globals != Py_None && !PyDict_Check(globals)) {
! PyErr_SetString(PyExc_TypeError, PyMapping_Check(globals) ?
"globals must be a real dict; try eval(expr, {}, mapping)"
: "globals must be a dict");
return NULL;
***
*** 1190,1200
if (kwds != NULL && PyDict_Check(kwds) && PyDict_Size(kwds)) {
keyfunc = PyDict_GetItemString(kwds, "key");
if (PyDict_Size(kwds)!=1 || keyfunc == NULL) {
! PyErr_Format(PyExc_TypeError,
"%s() got an unexpected keyword argument", name);
return NULL;
}
! }
it = PyObject_GetIter(v);
if (it == NULL)
--- 1191,1201
if (kwds != NULL && PyDict_Check(kwds) && PyDict_Size(kwds)) {
keyfunc = PyDict_GetItemString(kwds, "key");
if (PyDict_Size(kwds)!=1 || keyfunc == NULL) {
! PyErr_Format(PyExc_TypeError,
"%s() got an unexpected keyword argument", name);
return NULL;
}
! }
it = PyObject_GetIter(v);
if (it == NULL)
***
*** 1908,1914
Py_DECREF(newlist);
return NULL;
}
!
newargs = PyTuple_GetSlice(args, 1, 4);
if (newargs == NULL) {
Py_DECREF(newlist);
--- 1909,1915
Py_DECREF(newlist);
return NULL;
}
!
newargs = PyTuple_GetSlice(args, 1, 4);
if (newargs == NULL) {
Py_DECREF(newlist);
***
*** 2536,2556
if (ok) {
int reslen;
if (!PyUnicode_Check(item)) {
! PyErr_SetString(PyExc_TypeError,
"can't filter unicode to unicode:"
" __getitem__ returned different type");
Py_DECREF(item);
goto Fail_1;
}
reslen = PyUnicode_GET_SIZE(item);
! if (reslen == 1)
PyUnicode_AS_UNICODE(result)[j++] =
PyUnicode_AS_UNICODE(item)[0];
else {
/* do we need more space? */
int need = j + reslen + len - i - 1;
if (need > outlen) {
! /* overallocate,
to avoid reallocations */
if (need < 2 * outlen)
need = 2 * outlen;
--- 2537,2557
if (ok) {
int reslen;
if (!PyUnicode_Check(item)) {
! PyErr_SetString(PyExc_TypeError,
"can't filter unicode to unicode:"
" __getitem__ returned different type");
Py_DECREF(item);
goto Fail_1;
}
reslen = PyUnicode_GET_SIZE(item);
! if (reslen == 1)
PyUnicode_AS_UNICODE(result)[j++] =
PyUnicode_AS_UNICODE(item)[0];
else {
/* do we need more space? */
int need = j + reslen + len - i - 1;
if (need > outlen) {
! /* overallocate,
to avoid reallocations */
if (need < 2 * outlen)
need = 2 * outlen;
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com