[Python-checkins] gh-105184: document that marshal functions can fail and need to be checked with PyErr_Occurred (#105185)

iritkatriel webhook-mailer at python.org
Fri Jun 2 03:59:25 EDT 2023


https://github.com/python/cpython/commit/ee26ca13a129da8cf549409d0a1b2e892ff2b4ec
commit: ee26ca13a129da8cf549409d0a1b2e892ff2b4ec
branch: main
author: Irit Katriel <1055913+iritkatriel at users.noreply.github.com>
committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com>
date: 2023-06-02T08:59:18+01:00
summary:

gh-105184: document that marshal functions can fail and need to be checked with PyErr_Occurred (#105185)

files:
M Doc/c-api/marshal.rst
M Python/marshal.c

diff --git a/Doc/c-api/marshal.rst b/Doc/c-api/marshal.rst
index 8e25968c6909..489f1580a414 100644
--- a/Doc/c-api/marshal.rst
+++ b/Doc/c-api/marshal.rst
@@ -25,12 +25,16 @@ unmarshalling.  Version 2 uses a binary format for floating point numbers.
    the least-significant 32 bits of *value*; regardless of the size of the
    native :c:expr:`long` type.  *version* indicates the file format.
 
+   This function can fail, in which case it sets the error indicator.
+   Use :c:func:`PyErr_Occurred` to check for that.
 
 .. c:function:: void PyMarshal_WriteObjectToFile(PyObject *value, FILE *file, int version)
 
    Marshal a Python object, *value*, to *file*.
    *version* indicates the file format.
 
+   This function can fail, in which case it sets the error indicator.
+   Use :c:func:`PyErr_Occurred` to check for that.
 
 .. c:function:: PyObject* PyMarshal_WriteObjectToString(PyObject *value, int version)
 
diff --git a/Python/marshal.c b/Python/marshal.c
index 208996b05fc4..6439503d2c68 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -625,6 +625,10 @@ w_clear_refs(WFILE *wf)
 }
 
 /* version currently has no effect for writing ints. */
+/* Note that while the documentation states that this function
+ * can error, currently it never does. Setting an exception in
+ * this function should be regarded as an API-breaking change.
+ */
 void
 PyMarshal_WriteLongToFile(long x, FILE *fp, int version)
 {



More information about the Python-checkins mailing list