diff -r 0480b540a451 Objects/abstract.c --- a/Objects/abstract.c Tue Sep 20 00:03:09 2016 +0200 +++ b/Objects/abstract.c Mon Sep 19 21:10:07 2016 -0400 @@ -1795,6 +1795,10 @@ /* Fill the tuple. */ for (j = 0; ; ++j) { PyObject *item = PyIter_Next(it); + /* check for ctrl-c interrupt */ + PyErr_CheckSignals(); + if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) + return NULL; if (item == NULL) { if (PyErr_Occurred()) goto Fail; diff -r 0480b540a451 Objects/dictobject.c --- a/Objects/dictobject.c Tue Sep 20 00:03:09 2016 +0200 +++ b/Objects/dictobject.c Mon Sep 19 21:10:07 2016 -0400 @@ -2327,6 +2327,11 @@ PyObject *key, *value; Py_ssize_t n; + /* check for ctrl-c interrupt */ + PyErr_CheckSignals(); + if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) + return -1; + fast = NULL; item = PyIter_Next(it); if (item == NULL) { diff -r 0480b540a451 Objects/listobject.c --- a/Objects/listobject.c Tue Sep 20 00:03:09 2016 +0200 +++ b/Objects/listobject.c Mon Sep 19 21:10:07 2016 -0400 @@ -855,6 +855,10 @@ /* Run iterator to exhaustion. */ for (;;) { PyObject *item = iternext(it); + /* check for ctrl-c interrupt */ + PyErr_CheckSignals(); + if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) + return NULL; if (item == NULL) { if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_StopIteration)) diff -r 0480b540a451 Objects/setobject.c --- a/Objects/setobject.c Tue Sep 20 00:03:09 2016 +0200 +++ b/Objects/setobject.c Mon Sep 19 21:10:07 2016 -0400 @@ -1005,6 +1005,10 @@ return -1; while ((key = PyIter_Next(it)) != NULL) { + /* check for ctrl-c interrupt */ + PyErr_CheckSignals(); + if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) + return -1; if (set_add_key(so, key)) { Py_DECREF(it); Py_DECREF(key); diff -r 0480b540a451 Python/bltinmodule.c --- a/Python/bltinmodule.c Tue Sep 20 00:03:09 2016 +0200 +++ b/Python/bltinmodule.c Mon Sep 19 21:10:07 2016 -0400 @@ -1517,6 +1517,10 @@ maxitem = NULL; /* the result */ maxval = NULL; /* the value associated with the result */ while (( item = PyIter_Next(it) )) { + /* check for ctrl-c interrupt */ + PyErr_CheckSignals(); + if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) + return NULL; /* get the value from the key function */ if (keyfunc != NULL) { val = PyObject_CallFunctionObjArgs(keyfunc, item, NULL); @@ -2226,6 +2230,10 @@ result = NULL; } while(result == NULL) { + /* check for ctrl-c interrupt */ + PyErr_CheckSignals(); + if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) + return NULL; item = PyIter_Next(iter); if (item == NULL) { Py_DECREF(iter); @@ -2265,6 +2273,10 @@ Py_DECREF(result); result = NULL; while(result == NULL) { + /* check for ctrl-c interrupt */ + PyErr_CheckSignals(); + if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) + return NULL; item = PyIter_Next(iter); if (item == NULL) { Py_DECREF(iter); @@ -2305,6 +2317,10 @@ #endif for(;;) { + /* check for ctrl-c interrupt */ + PyErr_CheckSignals(); + if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) + return NULL; item = PyIter_Next(iter); if (item == NULL) { /* error, or end-of-sequence */