[3.11] gh-104645: fix error handling in marshal tests (GH-104646) (#104663)

gh-104645: fix error handling in marshal tests (GH-104646)
(cherry picked from commit ac56a854b4)

Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
This commit is contained in:
Miss Islington (bot) 2023-05-19 09:46:37 -07:00 committed by GitHub
parent 702ce87736
commit d78c3bcf6f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -4639,10 +4639,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;
}
@ -4665,10 +4664,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;
}
@ -4726,48 +4724,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);
}