Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Fix gc.get_freeze_count(): use Py_ssize_t internally
Use Py_ssize_t type rather than int, since gc_list_size() returns a Py_ssize_t.

This change prevent any risk of integer overflow.
  • Loading branch information
vstinner committed Jan 18, 2018
commit f7c58fcc7b3364c9a2f00ff7ee5a0a3607c6e238
8 changes: 4 additions & 4 deletions Modules/clinic/gcmodule.c.h
Original file line number Diff line number Diff line change
Expand Up @@ -307,22 +307,22 @@ PyDoc_STRVAR(gc_get_freeze_count__doc__,
#define GC_GET_FREEZE_COUNT_METHODDEF \
{"get_freeze_count", (PyCFunction)gc_get_freeze_count, METH_NOARGS, gc_get_freeze_count__doc__},

static int
static Py_ssize_t
gc_get_freeze_count_impl(PyObject *module);

static PyObject *
gc_get_freeze_count(PyObject *module, PyObject *Py_UNUSED(ignored))
{
PyObject *return_value = NULL;
int _return_value;
Py_ssize_t _return_value;

_return_value = gc_get_freeze_count_impl(module);
if ((_return_value == -1) && PyErr_Occurred()) {
goto exit;
}
return_value = PyLong_FromLong((long)_return_value);
return_value = PyLong_FromSsize_t(_return_value);

exit:
return return_value;
}
/*[clinic end generated code: output=6f9ee4d8dd1f36c1 input=a9049054013a1b77]*/
/*[clinic end generated code: output=21dc9270b10b7891 input=a9049054013a1b77]*/
6 changes: 3 additions & 3 deletions Modules/gcmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -1449,14 +1449,14 @@ gc_unfreeze_impl(PyObject *module)
}

/*[clinic input]
gc.get_freeze_count -> int
gc.get_freeze_count -> Py_ssize_t

Return the number of objects in the permanent generation.
[clinic start generated code]*/

static int
static Py_ssize_t
gc_get_freeze_count_impl(PyObject *module)
/*[clinic end generated code: output=e4e2ebcc77e5cbf3 input=4b759db880a3c6e4]*/
/*[clinic end generated code: output=61cbd9f43aa032e1 input=45ffbc65cfe2a6ed]*/
{
return gc_list_size(&_PyRuntime.gc.permanent_generation.head);
}
Expand Down