mirror of
https://github.com/python/cpython.git
synced 2024-12-01 03:01:36 +01:00
c896700235
Multiple reinitializations of Python 3.0 failed on a system without a hardcoded default fs encoding. The patch makes sure that the default fs encoding is freed and reset to NULL on e.g. Linux. I've also taken the liberty to increase the debugging in Objects/object.c:_Py_ForgetReference(). The method is used to validate the reference chain. Reinitialization still fails in the 3rd round of my test suite: * ob object : <refcnt 0 at 0x821c840> type : str refcount: 0 address : 0x821c840 * op->_ob_prev->_ob_next object : <refcnt 0 at 0x821c840> type : str refcount: 0 address : 0x821c840 * op->_ob_next->_ob_prev object : bytearray(b'') type : bytearray refcount: 1 address : 0x826b838 Fatal Python error: UNREF invalid object
36 lines
1.1 KiB
C
36 lines
1.1 KiB
C
/* File object interface (what's left of it -- see io.py) */
|
|
|
|
#ifndef Py_FILEOBJECT_H
|
|
#define Py_FILEOBJECT_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define PY_STDIOTEXTMODE "b"
|
|
|
|
PyAPI_FUNC(PyObject *) PyFile_FromFd(int, char *, char *, int, char *, char *,
|
|
int);
|
|
PyAPI_FUNC(PyObject *) PyFile_GetLine(PyObject *, int);
|
|
PyAPI_FUNC(int) PyFile_WriteObject(PyObject *, PyObject *, int);
|
|
PyAPI_FUNC(int) PyFile_WriteString(const char *, PyObject *);
|
|
PyAPI_FUNC(int) PyObject_AsFileDescriptor(PyObject *);
|
|
PyAPI_FUNC(char *) Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *);
|
|
|
|
/* The default encoding used by the platform file system APIs
|
|
If non-NULL, this is different than the default encoding for strings
|
|
*/
|
|
PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding;
|
|
PyAPI_DATA(const int) Py_HasFileSystemDefaultEncoding;
|
|
|
|
/* Internal API
|
|
|
|
The std printer acts as a preliminary sys.stderr until the new io
|
|
infrastructure is in place. */
|
|
PyAPI_FUNC(PyObject *) PyFile_NewStdPrinter(int);
|
|
PyAPI_DATA(PyTypeObject) PyStdPrinter_Type;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* !Py_FILEOBJECT_H */
|