Skip to content

Commit e1c396d

Browse files
[3.9] gh-105184: document that marshal functions can fail and need to be checked with PyErr_Occurred (GH-105185) (#105221)
(cherry picked from commit ee26ca1) Co-authored-by: Irit Katriel <[email protected]>
1 parent e15de14 commit e1c396d

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

Doc/c-api/marshal.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,16 @@ unmarshalling. Version 2 uses a binary format for floating point numbers.
2525
the least-significant 32 bits of *value*; regardless of the size of the
2626
native :c:type:`long` type. *version* indicates the file format.
2727
28+
This function can fail, in which case it sets the error indicator.
29+
Use :c:func:`PyErr_Occurred` to check for that.
2830
2931
.. c:function:: void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)
3032
3133
Marshal a Python object, *value*, to *file*.
3234
*version* indicates the file format.
3335
36+
This function can fail, in which case it sets the error indicator.
37+
Use :c:func:`PyErr_Occurred` to check for that.
3438
3539
.. c:function:: PyObject* PyMarshal_WriteObjectToString(PyObject *value, int version)
3640

Python/marshal.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,10 @@ w_clear_refs(WFILE *wf)
576576
}
577577

578578
/* version currently has no effect for writing ints. */
579+
/* Note that while the documentation states that this function
580+
* can error, currently it never does. Setting an exception in
581+
* this function should be regarded as an API-breaking change.
582+
*/
579583
void
580584
PyMarshal_WriteLongToFile(long x, FILE *fp, int version)
581585
{

0 commit comments

Comments
 (0)