@@ -770,33 +770,52 @@ Functions encoding to and decoding from the :term:`filesystem encoding and
770770error handler` (:pep: `383 ` and :pep: `529 `). 
771771
772772To encode file names to :class:`bytes` during argument parsing, the ``"O&"`` 
773- converter should be used, passing :c:func:`PyUnicode_FSConverter` as the 
773+ converter should be used, passing :c:func:`! PyUnicode_FSConverter` as the 
774774conversion function: 
775775
776776.. c:function:: int PyUnicode_FSConverter(PyObject* obj, void* result) 
777777
778-    ParseTuple  converter: encode :class:`str` objects -- obtained directly or 
778+    :ref:`PyArg_Parse\*  converter <arg-parsing>` : encode :class:`str` objects -- obtained directly or 
779779   through the :class:`os.PathLike` interface -- to :class:`bytes` using 
780780   :c:func:`PyUnicode_EncodeFSDefault`; :class:`bytes` objects are output as-is. 
781- result * must be a :c:expr: `PyBytesObject* ` which must be released when it is
782-    no longer used. 
781+ result * must be an address of a C variable of type :c:expr: `PyObject* `
782+    (or :c:expr: `PyBytesObject* `). 
783+    On success, set the variable to a new :term:`strong reference` to 
784+    a :ref:`bytes object <bytesobjects>` which must be released 
785+    when it is no longer used and return a non-zero value 
786+    (:c:macro: `Py_CLEANUP_SUPPORTED `). 
787+    Embedded null bytes are not allowed in the result. 
788+    On failure, return ``0`` with an exception set. 
789+ 
790+    If *obj* is ``NULL``, the function releases a strong reference 
791+    stored in the variable referred by *result* and returns ``1``. 
783792
784793   .. versionadded:: 3.1 
785794
786795   .. versionchanged:: 3.6 
787796      Accepts a :term:`path-like object`. 
788797
789798To decode file names to :class:`str` during argument parsing, the ``"O&"`` 
790- converter should be used, passing :c:func: `PyUnicode_FSDecoder ` as the 
799+ converter should be used, passing :c:func:`! PyUnicode_FSDecoder` as the 
791800conversion function: 
792801
793802.. c:function:: int PyUnicode_FSDecoder(PyObject* obj, void* result) 
794803
795-    ParseTuple  converter: decode :class:`bytes` objects -- obtained either 
804+    :ref:`PyArg_Parse\*  converter <arg-parsing>` : decode :class:`bytes` objects -- obtained either 
796805   directly or indirectly through the :class:`os.PathLike` interface -- to 
797806   :class:`str` using :c:func:`PyUnicode_DecodeFSDefaultAndSize`; :class:`str` 
798- result * must be a :c:expr: `PyUnicodeObject* ` which
799-    must be released when it is no longer used. 
807+ 
808+    *result * must be an address of a C variable of type :c:expr: `PyObject* ` 
809+    (or :c:expr: `PyUnicodeObject* `). 
810+    On success, set the variable to a new :term:`strong reference` to 
811+    a :ref:`Unicode object <unicodeobjects>` which must be released 
812+    when it is no longer used and return a non-zero value 
813+    (:c:macro: `Py_CLEANUP_SUPPORTED `). 
814+    Embedded null characters are not allowed in the result. 
815+    On failure, return ``0`` with an exception set. 
816+ 
817+    If *obj* is ``NULL``, release the strong reference 
818+    to the object referred to by *result* and return ``1``. 
800819
801820   .. versionadded:: 3.2 
802821
0 commit comments