merge from trunk

This commit is contained in:
Benjamin Peterson 2008-10-11 00:49:57 +00:00
parent 2d8dcdcb06
commit f10a79aad4
40 changed files with 621 additions and 305 deletions

View file

@ -746,7 +746,8 @@ set_pop(PySetObject *so)
return key;
}
PyDoc_STRVAR(pop_doc, "Remove and return an arbitrary set element.");
PyDoc_STRVAR(pop_doc, "Remove and return an arbitrary set element.\n\
Raises KeyError if the set is empty.");
static int
set_traverse(PySetObject *so, visitproc visit, void *arg)
@ -1861,7 +1862,7 @@ PyDoc_STRVAR(contains_doc, "x.__contains__(y) <==> y in x.");
static PyObject *
set_remove(PySetObject *so, PyObject *key)
{
PyObject *tmpkey, *result;
PyObject *tmpkey;
int rv;
rv = set_discard_key(so, key);
@ -1873,11 +1874,14 @@ set_remove(PySetObject *so, PyObject *key)
if (tmpkey == NULL)
return NULL;
set_swap_bodies((PySetObject *)tmpkey, (PySetObject *)key);
result = set_remove(so, tmpkey);
rv = set_discard_key(so, tmpkey);
set_swap_bodies((PySetObject *)tmpkey, (PySetObject *)key);
Py_DECREF(tmpkey);
return result;
} else if (rv == DISCARD_NOTFOUND) {
if (rv == -1)
return NULL;
}
if (rv == DISCARD_NOTFOUND) {
set_key_error(key);
return NULL;
}