Skip to content

Commit 137c47f

Browse files
committed
minor edit
1 parent 15c8015 commit 137c47f

File tree

1 file changed

+41
-36
lines changed

1 file changed

+41
-36
lines changed

Objects/listobject.c

Lines changed: 41 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2992,50 +2992,55 @@ list_sort_impl(PyListObject *self, PyObject *keyfunc, PyObject *keylist,
29922992
lo.keys = saved_ob_item;
29932993
lo.values = NULL;
29942994
}
2995-
else {
2996-
if (keyfunc != NULL) {
2997-
if (saved_ob_size < MERGESTATE_TEMP_SIZE/2)
2998-
/* Leverage stack space we allocated but won't otherwise use */
2999-
keys = &ms.temparray[saved_ob_size+1];
3000-
else {
3001-
keys = PyMem_Malloc(sizeof(PyObject *) * saved_ob_size);
3002-
if (keys == NULL) {
3003-
PyErr_NoMemory();
3004-
goto keyfunc_fail;
3005-
}
3006-
}
3007-
for (i = 0; i < saved_ob_size ; i++) {
3008-
keys[i] = PyObject_CallOneArg(keyfunc, saved_ob_item[i]);
3009-
if (keys[i] == NULL) {
3010-
for (i=i-1 ; i>=0 ; i--)
3011-
Py_DECREF(keys[i]);
3012-
if (saved_ob_size >= MERGESTATE_TEMP_SIZE/2)
3013-
PyMem_Free(keys);
3014-
goto keyfunc_fail;
3015-
}
3016-
}
3017-
}
2995+
else if (keyfunc != NULL) {
2996+
if (saved_ob_size < MERGESTATE_TEMP_SIZE/2)
2997+
/* Leverage stack space we allocated but won't otherwise use */
2998+
keys = &ms.temparray[saved_ob_size+1];
30182999
else {
3019-
assert(keylist != NULL);
3020-
if (!PyList_Check(keylist)) {
3021-
PyErr_Format(PyExc_TypeError,
3022-
"'%.200s' object is not a list",
3023-
Py_TYPE(keylist)->tp_name);
3000+
keys = PyMem_Malloc(sizeof(PyObject *) * saved_ob_size);
3001+
if (keys == NULL) {
3002+
PyErr_NoMemory();
30243003
goto keyfunc_fail;
30253004
}
3026-
self_kl = ((PyListObject *) keylist);
3027-
DISABLE_LIST(self_kl, keylist_ob_size, keylist_ob_item, keylist_allocated);
3028-
keylist_frozen = 1;
3029-
if (saved_ob_size != keylist_ob_size) {
3030-
PyErr_SetString(PyExc_ValueError,
3031-
"Lengths of input list and keylist differ.");
3032-
goto keylist_fail;
3005+
}
3006+
3007+
for (i = 0; i < saved_ob_size ; i++) {
3008+
keys[i] = PyObject_CallOneArg(keyfunc, saved_ob_item[i]);
3009+
if (keys[i] == NULL) {
3010+
for (i=i-1 ; i>=0 ; i--)
3011+
Py_DECREF(keys[i]);
3012+
if (saved_ob_size >= MERGESTATE_TEMP_SIZE/2)
3013+
PyMem_Free(keys);
3014+
goto keyfunc_fail;
30333015
}
3034-
keys = keylist_ob_item;
30353016
}
3017+
30363018
lo.keys = keys;
30373019
lo.values = saved_ob_item;
30383020
}
3021+
else {
3022+
assert(keylist != NULL);
3023+
if (!PyList_Check(keylist)) {
3024+
PyErr_Format(PyExc_TypeError,
3025+
"'%.200s' object is not a list",
3026+
Py_TYPE(keylist)->tp_name);
3027+
goto keyfunc_fail;
3028+
}
3029+
3030+
self_kl = ((PyListObject *) keylist);
3031+
DISABLE_LIST(self_kl, keylist_ob_size, keylist_ob_item, keylist_allocated);
3032+
keylist_frozen = 1;
3033+
if (saved_ob_size != keylist_ob_size) {
3034+
PyErr_SetString(PyExc_ValueError,
3035+
"Lengths of input list and keylist differ.");
3036+
goto keylist_fail;
3037+
}
3038+
3039+
keys = keylist_ob_item;
3040+
lo.keys = keys;
3041+
lo.values = saved_ob_item;
3042+
}
3043+
30393044
/* The pre-sort check: here's where we decide which compare function to use.
30403045
* How much optimization is safe? We test for homogeneity with respect to
30413046
* several properties that are expensive to check at compare-time, and

0 commit comments

Comments
 (0)