From 19b26009893ba7f59a9cca2b38507fdfd17b00f9 Mon Sep 17 00:00:00 2001 From: Irit Katriel Date: Fri, 19 May 2023 11:00:33 +0100 Subject: [PATCH] gh-104645: fix error handling in marshal tests --- Modules/_testcapimodule.c | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index c29d29c4791134..8db4b1ec578f33 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -1808,10 +1808,9 @@ pymarshal_write_long_to_file(PyObject* self, PyObject *args) } PyMarshal_WriteLongToFile(value, fp, version); + assert(!PyErr_Occurred()); fclose(fp); - if (PyErr_Occurred()) - return NULL; Py_RETURN_NONE; } @@ -1834,10 +1833,9 @@ pymarshal_write_object_to_file(PyObject* self, PyObject *args) } PyMarshal_WriteObjectToFile(obj, fp, version); + assert(!PyErr_Occurred()); fclose(fp); - if (PyErr_Occurred()) - return NULL; Py_RETURN_NONE; } @@ -1895,48 +1893,46 @@ pymarshal_read_long_from_file(PyObject* self, PyObject *args) static PyObject* pymarshal_read_last_object_from_file(PyObject* self, PyObject *args) { - PyObject *obj; - long pos; PyObject *filename; - FILE *fp; - if (!PyArg_ParseTuple(args, "O:pymarshal_read_last_object_from_file", &filename)) return NULL; - fp = _Py_fopen_obj(filename, "rb"); + FILE *fp = _Py_fopen_obj(filename, "rb"); if (fp == NULL) { PyErr_SetFromErrno(PyExc_OSError); return NULL; } - obj = PyMarshal_ReadLastObjectFromFile(fp); - pos = ftell(fp); + PyObject *obj = PyMarshal_ReadLastObjectFromFile(fp); + long pos = ftell(fp); fclose(fp); + if (obj == NULL) { + return NULL; + } return Py_BuildValue("Nl", obj, pos); } static PyObject* pymarshal_read_object_from_file(PyObject* self, PyObject *args) { - PyObject *obj; - long pos; PyObject *filename; - FILE *fp; - if (!PyArg_ParseTuple(args, "O:pymarshal_read_object_from_file", &filename)) return NULL; - fp = _Py_fopen_obj(filename, "rb"); + FILE *fp = _Py_fopen_obj(filename, "rb"); if (fp == NULL) { PyErr_SetFromErrno(PyExc_OSError); return NULL; } - obj = PyMarshal_ReadObjectFromFile(fp); - pos = ftell(fp); + PyObject *obj = PyMarshal_ReadObjectFromFile(fp); + long pos = ftell(fp); fclose(fp); + if (obj == NULL) { + return NULL; + } return Py_BuildValue("Nl", obj, pos); }