thread.stack_size(0)
self.assertEqual(thread.stack_size(), 0, "stack_size not reset to default")
+ with self.assertRaises(ValueError):
+ # 123 bytes is too small
+ thread.stack_size(123)
+
+ with self.assertRaises(ValueError):
+ # size must be positive
+ thread.stack_size(-4096)
+
@unittest.skipIf(os.name not in ("nt", "posix"), 'test meant for nt and posix')
def test_nt_and_posix_stack_size(self):
try:
--- /dev/null
+:func:`_thread.stack_size` now raises :exc:`ValueError` if the stack size is
+too small. Patch by Victor Stinner.
if (!PyArg_ParseTuple(args, "|n:stack_size", &new_size))
return NULL;
- if (new_size < 0) {
- PyErr_SetString(PyExc_ValueError,
- "size must be 0 or a positive value");
+ Py_ssize_t min_size = _PyOS_MIN_STACK_SIZE + SYSTEM_PAGE_SIZE;
+ if (new_size != 0 && new_size < min_size) {
+ PyErr_Format(PyExc_ValueError,
+ "size must be at least %zi bytes", min_size);
return NULL;
}