Issue #19569: Compiler warnings are now emitted if use most of deprecated

functions.
This commit is contained in:
Serhiy Storchaka 2016-11-20 12:16:46 +02:00
parent 6107f46bfb
commit 460bd0d284
18 changed files with 143 additions and 142 deletions

View file

@ -549,7 +549,8 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj, PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj,
const char **buffer, const char **buffer,
Py_ssize_t *buffer_len); Py_ssize_t *buffer_len)
Py_DEPRECATED(3.0);
/* /*
Takes an arbitrary object which must support the (character, Takes an arbitrary object which must support the (character,
@ -562,7 +563,8 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
an exception set. an exception set.
*/ */
PyAPI_FUNC(int) PyObject_CheckReadBuffer(PyObject *obj); PyAPI_FUNC(int) PyObject_CheckReadBuffer(PyObject *obj)
Py_DEPRECATED(3.0);
/* /*
Checks whether an arbitrary object supports the (character, Checks whether an arbitrary object supports the (character,
@ -572,7 +574,8 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj, PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj,
const void **buffer, const void **buffer,
Py_ssize_t *buffer_len); Py_ssize_t *buffer_len)
Py_DEPRECATED(3.0);
/* /*
Same as PyObject_AsCharBuffer() except that this API expects Same as PyObject_AsCharBuffer() except that this API expects
@ -587,7 +590,8 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
PyAPI_FUNC(int) PyObject_AsWriteBuffer(PyObject *obj, PyAPI_FUNC(int) PyObject_AsWriteBuffer(PyObject *obj,
void **buffer, void **buffer,
Py_ssize_t *buffer_len); Py_ssize_t *buffer_len)
Py_DEPRECATED(3.0);
/* /*
Takes an arbitrary object which must support the (writable, Takes an arbitrary object which must support the (writable,

View file

@ -182,8 +182,8 @@ PyAPI_FUNC(void) PyEval_InitThreads(void);
#ifndef Py_LIMITED_API #ifndef Py_LIMITED_API
PyAPI_FUNC(void) _PyEval_FiniThreads(void); PyAPI_FUNC(void) _PyEval_FiniThreads(void);
#endif /* !Py_LIMITED_API */ #endif /* !Py_LIMITED_API */
PyAPI_FUNC(void) PyEval_AcquireLock(void); PyAPI_FUNC(void) PyEval_AcquireLock(void) Py_DEPRECATED(3.2);
PyAPI_FUNC(void) PyEval_ReleaseLock(void); PyAPI_FUNC(void) PyEval_ReleaseLock(void) /* Py_DEPRECATED(3.2) */;
PyAPI_FUNC(void) PyEval_AcquireThread(PyThreadState *tstate); PyAPI_FUNC(void) PyEval_AcquireThread(PyThreadState *tstate);
PyAPI_FUNC(void) PyEval_ReleaseThread(PyThreadState *tstate); PyAPI_FUNC(void) PyEval_ReleaseThread(PyThreadState *tstate);
PyAPI_FUNC(void) PyEval_ReInitThreads(void); PyAPI_FUNC(void) PyEval_ReInitThreads(void);

View file

@ -94,7 +94,7 @@ PyAPI_FUNC(long long) PyLong_AsLongLongAndOverflow(PyObject *, int *);
PyAPI_FUNC(PyObject *) PyLong_FromString(const char *, char **, int); PyAPI_FUNC(PyObject *) PyLong_FromString(const char *, char **, int);
#ifndef Py_LIMITED_API #ifndef Py_LIMITED_API
PyAPI_FUNC(PyObject *) PyLong_FromUnicode(Py_UNICODE*, Py_ssize_t, int); PyAPI_FUNC(PyObject *) PyLong_FromUnicode(Py_UNICODE*, Py_ssize_t, int) Py_DEPRECATED(3.3);
PyAPI_FUNC(PyObject *) PyLong_FromUnicodeObject(PyObject *u, int base); PyAPI_FUNC(PyObject *) PyLong_FromUnicodeObject(PyObject *u, int base);
PyAPI_FUNC(PyObject *) _PyLong_FromBytes(const char *, Py_ssize_t, int); PyAPI_FUNC(PyObject *) _PyLong_FromBytes(const char *, Py_ssize_t, int);
#endif #endif

View file

@ -21,7 +21,7 @@ PyAPI_FUNC(PyObject *) PyModule_New(
PyAPI_FUNC(PyObject *) PyModule_GetDict(PyObject *); PyAPI_FUNC(PyObject *) PyModule_GetDict(PyObject *);
PyAPI_FUNC(PyObject *) PyModule_GetNameObject(PyObject *); PyAPI_FUNC(PyObject *) PyModule_GetNameObject(PyObject *);
PyAPI_FUNC(const char *) PyModule_GetName(PyObject *); PyAPI_FUNC(const char *) PyModule_GetName(PyObject *);
PyAPI_FUNC(const char *) PyModule_GetFilename(PyObject *); PyAPI_FUNC(const char *) PyModule_GetFilename(PyObject *) Py_DEPRECATED(3.2);
PyAPI_FUNC(PyObject *) PyModule_GetFilenameObject(PyObject *); PyAPI_FUNC(PyObject *) PyModule_GetFilenameObject(PyObject *);
#ifndef Py_LIMITED_API #ifndef Py_LIMITED_API
PyAPI_FUNC(void) _PyModule_Clear(PyObject *); PyAPI_FUNC(void) _PyModule_Clear(PyObject *);

View file

@ -240,7 +240,7 @@ PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilename(
); );
#if defined(MS_WINDOWS) && !defined(Py_LIMITED_API) #if defined(MS_WINDOWS) && !defined(Py_LIMITED_API)
PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithUnicodeFilename( PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithUnicodeFilename(
PyObject *, const Py_UNICODE *); PyObject *, const Py_UNICODE *) Py_DEPRECATED(3.3);
#endif /* MS_WINDOWS */ #endif /* MS_WINDOWS */
PyAPI_FUNC(PyObject *) PyErr_Format( PyAPI_FUNC(PyObject *) PyErr_Format(
@ -274,7 +274,7 @@ PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilename(
#ifndef Py_LIMITED_API #ifndef Py_LIMITED_API
/* XXX redeclare to use WSTRING */ /* XXX redeclare to use WSTRING */
PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithUnicodeFilename( PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithUnicodeFilename(
int, const Py_UNICODE *); int, const Py_UNICODE *) Py_DEPRECATED(3.3);
#endif #endif
PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErr(int); PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErr(int);
PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObject( PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObject(
@ -288,7 +288,7 @@ PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilename(
); );
#ifndef Py_LIMITED_API #ifndef Py_LIMITED_API
PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithUnicodeFilename( PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithUnicodeFilename(
PyObject *,int, const Py_UNICODE *); PyObject *,int, const Py_UNICODE *) Py_DEPRECATED(3.3);
#endif #endif
PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErr(PyObject *, int); PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErr(PyObject *, int);
#endif /* MS_WINDOWS */ #endif /* MS_WINDOWS */
@ -391,7 +391,7 @@ PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_Create(
Py_ssize_t start, Py_ssize_t start,
Py_ssize_t end, Py_ssize_t end,
const char *reason /* UTF-8 encoded string */ const char *reason /* UTF-8 encoded string */
); ) Py_DEPRECATED(3.3);
#endif #endif
/* create a UnicodeTranslateError object */ /* create a UnicodeTranslateError object */
@ -402,7 +402,7 @@ PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_Create(
Py_ssize_t start, Py_ssize_t start,
Py_ssize_t end, Py_ssize_t end,
const char *reason /* UTF-8 encoded string */ const char *reason /* UTF-8 encoded string */
); ) Py_DEPRECATED(3.3);
PyAPI_FUNC(PyObject *) _PyUnicodeTranslateError_Create( PyAPI_FUNC(PyObject *) _PyUnicodeTranslateError_Create(
PyObject *object, PyObject *object,
Py_ssize_t start, Py_ssize_t start,

View file

@ -90,7 +90,7 @@ Copyright (c) Corporation for National Research Initiatives.
#ifndef Py_LIMITED_API #ifndef Py_LIMITED_API
#define PY_UNICODE_TYPE wchar_t #define PY_UNICODE_TYPE wchar_t
typedef wchar_t Py_UNICODE; typedef wchar_t Py_UNICODE /* Py_DEPRECATED(3.3) */;
#endif #endif
/* If the compiler provides a wchar_t type we try to support it /* If the compiler provides a wchar_t type we try to support it
@ -387,9 +387,11 @@ PyAPI_DATA(PyTypeObject) PyUnicodeIter_Type;
((void)PyUnicode_AsUnicode((PyObject *)(op)), \ ((void)PyUnicode_AsUnicode((PyObject *)(op)), \
assert(((PyASCIIObject *)(op))->wstr), \ assert(((PyASCIIObject *)(op))->wstr), \
PyUnicode_WSTR_LENGTH(op))) PyUnicode_WSTR_LENGTH(op)))
/* Py_DEPRECATED(3.3) */
#define PyUnicode_GET_DATA_SIZE(op) \ #define PyUnicode_GET_DATA_SIZE(op) \
(PyUnicode_GET_SIZE(op) * Py_UNICODE_SIZE) (PyUnicode_GET_SIZE(op) * Py_UNICODE_SIZE)
/* Py_DEPRECATED(3.3) */
/* Alias for PyUnicode_AsUnicode(). This will create a wchar_t/Py_UNICODE /* Alias for PyUnicode_AsUnicode(). This will create a wchar_t/Py_UNICODE
representation on demand. Using this macro is very inefficient now, representation on demand. Using this macro is very inefficient now,
@ -400,9 +402,11 @@ PyAPI_DATA(PyTypeObject) PyUnicodeIter_Type;
(assert(PyUnicode_Check(op)), \ (assert(PyUnicode_Check(op)), \
(((PyASCIIObject *)(op))->wstr) ? (((PyASCIIObject *)(op))->wstr) : \ (((PyASCIIObject *)(op))->wstr) ? (((PyASCIIObject *)(op))->wstr) : \
PyUnicode_AsUnicode((PyObject *)(op))) PyUnicode_AsUnicode((PyObject *)(op)))
/* Py_DEPRECATED(3.3) */
#define PyUnicode_AS_DATA(op) \ #define PyUnicode_AS_DATA(op) \
((const char *)(PyUnicode_AS_UNICODE(op))) ((const char *)(PyUnicode_AS_UNICODE(op)))
/* Py_DEPRECATED(3.3) */
/* --- Flexible String Representation Helper Macros (PEP 393) -------------- */ /* --- Flexible String Representation Helper Macros (PEP 393) -------------- */
@ -688,7 +692,7 @@ PyAPI_FUNC(void) _PyUnicode_FastFill(
PyAPI_FUNC(PyObject*) PyUnicode_FromUnicode( PyAPI_FUNC(PyObject*) PyUnicode_FromUnicode(
const Py_UNICODE *u, /* Unicode buffer */ const Py_UNICODE *u, /* Unicode buffer */
Py_ssize_t size /* size of buffer */ Py_ssize_t size /* size of buffer */
); ) /* Py_DEPRECATED(3.3) */;
#endif #endif
/* Similar to PyUnicode_FromUnicode(), but u points to UTF-8 encoded bytes */ /* Similar to PyUnicode_FromUnicode(), but u points to UTF-8 encoded bytes */
@ -756,7 +760,7 @@ PyAPI_FUNC(Py_UCS4*) PyUnicode_AsUCS4Copy(PyObject *unicode);
#ifndef Py_LIMITED_API #ifndef Py_LIMITED_API
PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode( PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
PyObject *unicode /* Unicode object */ PyObject *unicode /* Unicode object */
); ) /* Py_DEPRECATED(3.3) */;
#endif #endif
/* Return a read-only pointer to the Unicode object's internal /* Return a read-only pointer to the Unicode object's internal
@ -768,7 +772,7 @@ PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicodeAndSize( PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicodeAndSize(
PyObject *unicode, /* Unicode object */ PyObject *unicode, /* Unicode object */
Py_ssize_t *size /* location where to save the length */ Py_ssize_t *size /* location where to save the length */
); ) /* Py_DEPRECATED(3.3) */;
#endif #endif
/* Get the length of the Unicode object. */ /* Get the length of the Unicode object. */
@ -782,7 +786,7 @@ PyAPI_FUNC(Py_ssize_t) PyUnicode_GetLength(
PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize( PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize(
PyObject *unicode /* Unicode object */ PyObject *unicode /* Unicode object */
); ) Py_DEPRECATED(3.3);
/* Read a character from the string. */ /* Read a character from the string. */
@ -804,7 +808,7 @@ PyAPI_FUNC(int) PyUnicode_WriteChar(
#ifndef Py_LIMITED_API #ifndef Py_LIMITED_API
/* Get the maximum ordinal for a Unicode character. */ /* Get the maximum ordinal for a Unicode character. */
PyAPI_FUNC(Py_UNICODE) PyUnicode_GetMax(void); PyAPI_FUNC(Py_UNICODE) PyUnicode_GetMax(void) Py_DEPRECATED(3.3);
#endif #endif
/* Resize a Unicode object. The length is the number of characters, except /* Resize a Unicode object. The length is the number of characters, except
@ -1205,7 +1209,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_Encode(
Py_ssize_t size, /* number of Py_UNICODE chars to encode */ Py_ssize_t size, /* number of Py_UNICODE chars to encode */
const char *encoding, /* encoding */ const char *encoding, /* encoding */
const char *errors /* error handling */ const char *errors /* error handling */
); ) Py_DEPRECATED(3.3);
#endif #endif
/* Encodes a Unicode object and returns the result as Python /* Encodes a Unicode object and returns the result as Python
@ -1272,7 +1276,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF7(
int base64SetO, /* Encode RFC2152 Set O characters in base64 */ int base64SetO, /* Encode RFC2152 Set O characters in base64 */
int base64WhiteSpace, /* Encode whitespace (sp, ht, nl, cr) in base64 */ int base64WhiteSpace, /* Encode whitespace (sp, ht, nl, cr) in base64 */
const char *errors /* error handling */ const char *errors /* error handling */
); ) Py_DEPRECATED(3.3);
PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF7( PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF7(
PyObject *unicode, /* Unicode object */ PyObject *unicode, /* Unicode object */
int base64SetO, /* Encode RFC2152 Set O characters in base64 */ int base64SetO, /* Encode RFC2152 Set O characters in base64 */
@ -1309,7 +1313,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8(
const Py_UNICODE *data, /* Unicode char buffer */ const Py_UNICODE *data, /* Unicode char buffer */
Py_ssize_t length, /* number of Py_UNICODE chars to encode */ Py_ssize_t length, /* number of Py_UNICODE chars to encode */
const char *errors /* error handling */ const char *errors /* error handling */
); ) Py_DEPRECATED(3.3);
#endif #endif
/* --- UTF-32 Codecs ------------------------------------------------------ */ /* --- UTF-32 Codecs ------------------------------------------------------ */
@ -1385,7 +1389,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF32(
Py_ssize_t length, /* number of Py_UNICODE chars to encode */ Py_ssize_t length, /* number of Py_UNICODE chars to encode */
const char *errors, /* error handling */ const char *errors, /* error handling */
int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */ int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */
); ) Py_DEPRECATED(3.3);
PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF32( PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF32(
PyObject *object, /* Unicode object */ PyObject *object, /* Unicode object */
const char *errors, /* error handling */ const char *errors, /* error handling */
@ -1470,7 +1474,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(
Py_ssize_t length, /* number of Py_UNICODE chars to encode */ Py_ssize_t length, /* number of Py_UNICODE chars to encode */
const char *errors, /* error handling */ const char *errors, /* error handling */
int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */ int byteorder /* byteorder to use 0=BOM+native;-1=LE,1=BE */
); ) Py_DEPRECATED(3.3);
PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF16( PyAPI_FUNC(PyObject*) _PyUnicode_EncodeUTF16(
PyObject* unicode, /* Unicode object */ PyObject* unicode, /* Unicode object */
const char *errors, /* error handling */ const char *errors, /* error handling */
@ -1505,7 +1509,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_AsUnicodeEscapeString(
PyAPI_FUNC(PyObject*) PyUnicode_EncodeUnicodeEscape( PyAPI_FUNC(PyObject*) PyUnicode_EncodeUnicodeEscape(
const Py_UNICODE *data, /* Unicode char buffer */ const Py_UNICODE *data, /* Unicode char buffer */
Py_ssize_t length /* Number of Py_UNICODE chars to encode */ Py_ssize_t length /* Number of Py_UNICODE chars to encode */
); ) Py_DEPRECATED(3.3);
#endif #endif
/* --- Raw-Unicode-Escape Codecs ------------------------------------------ */ /* --- Raw-Unicode-Escape Codecs ------------------------------------------ */
@ -1524,7 +1528,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_AsRawUnicodeEscapeString(
PyAPI_FUNC(PyObject*) PyUnicode_EncodeRawUnicodeEscape( PyAPI_FUNC(PyObject*) PyUnicode_EncodeRawUnicodeEscape(
const Py_UNICODE *data, /* Unicode char buffer */ const Py_UNICODE *data, /* Unicode char buffer */
Py_ssize_t length /* Number of Py_UNICODE chars to encode */ Py_ssize_t length /* Number of Py_UNICODE chars to encode */
); ) Py_DEPRECATED(3.3);
#endif #endif
/* --- Unicode Internal Codec --------------------------------------------- /* --- Unicode Internal Codec ---------------------------------------------
@ -1564,7 +1568,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_EncodeLatin1(
const Py_UNICODE *data, /* Unicode char buffer */ const Py_UNICODE *data, /* Unicode char buffer */
Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ Py_ssize_t length, /* Number of Py_UNICODE chars to encode */
const char *errors /* error handling */ const char *errors /* error handling */
); ) Py_DEPRECATED(3.3);
#endif #endif
/* --- ASCII Codecs ------------------------------------------------------- /* --- ASCII Codecs -------------------------------------------------------
@ -1592,7 +1596,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_EncodeASCII(
const Py_UNICODE *data, /* Unicode char buffer */ const Py_UNICODE *data, /* Unicode char buffer */
Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ Py_ssize_t length, /* Number of Py_UNICODE chars to encode */
const char *errors /* error handling */ const char *errors /* error handling */
); ) Py_DEPRECATED(3.3);
#endif #endif
/* --- Character Map Codecs ----------------------------------------------- /* --- Character Map Codecs -----------------------------------------------
@ -1638,7 +1642,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_EncodeCharmap(
PyObject *mapping, /* character mapping PyObject *mapping, /* character mapping
(unicode ordinal -> char ordinal) */ (unicode ordinal -> char ordinal) */
const char *errors /* error handling */ const char *errors /* error handling */
); ) Py_DEPRECATED(3.3);
PyAPI_FUNC(PyObject*) _PyUnicode_EncodeCharmap( PyAPI_FUNC(PyObject*) _PyUnicode_EncodeCharmap(
PyObject *unicode, /* Unicode object */ PyObject *unicode, /* Unicode object */
PyObject *mapping, /* character mapping PyObject *mapping, /* character mapping
@ -1666,7 +1670,7 @@ PyAPI_FUNC(PyObject *) PyUnicode_TranslateCharmap(
Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ Py_ssize_t length, /* Number of Py_UNICODE chars to encode */
PyObject *table, /* Translate table */ PyObject *table, /* Translate table */
const char *errors /* error handling */ const char *errors /* error handling */
); ) Py_DEPRECATED(3.3);
#endif #endif
#ifdef MS_WINDOWS #ifdef MS_WINDOWS
@ -1703,7 +1707,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_EncodeMBCS(
const Py_UNICODE *data, /* Unicode char buffer */ const Py_UNICODE *data, /* Unicode char buffer */
Py_ssize_t length, /* number of Py_UNICODE chars to encode */ Py_ssize_t length, /* number of Py_UNICODE chars to encode */
const char *errors /* error handling */ const char *errors /* error handling */
); ) Py_DEPRECATED(3.3);
#endif #endif
PyAPI_FUNC(PyObject*) PyUnicode_EncodeCodePage( PyAPI_FUNC(PyObject*) PyUnicode_EncodeCodePage(
@ -1744,7 +1748,7 @@ PyAPI_FUNC(int) PyUnicode_EncodeDecimal(
Py_ssize_t length, /* Number of Py_UNICODE chars to encode */ Py_ssize_t length, /* Number of Py_UNICODE chars to encode */
char *output, /* Output buffer; must have size >= length */ char *output, /* Output buffer; must have size >= length */
const char *errors /* error handling */ const char *errors /* error handling */
); ) /* Py_DEPRECATED(3.3) */;
#endif #endif
/* Transforms code points that have decimal digit property to the /* Transforms code points that have decimal digit property to the
@ -1757,7 +1761,7 @@ PyAPI_FUNC(int) PyUnicode_EncodeDecimal(
PyAPI_FUNC(PyObject*) PyUnicode_TransformDecimalToASCII( PyAPI_FUNC(PyObject*) PyUnicode_TransformDecimalToASCII(
Py_UNICODE *s, /* Unicode buffer */ Py_UNICODE *s, /* Unicode buffer */
Py_ssize_t length /* Number of Py_UNICODE chars to transform */ Py_ssize_t length /* Number of Py_UNICODE chars to transform */
); ) /* Py_DEPRECATED(3.3) */;
#endif #endif
/* Similar to PyUnicode_TransformDecimalToASCII(), but takes a PyObject /* Similar to PyUnicode_TransformDecimalToASCII(), but takes a PyObject
@ -2182,15 +2186,15 @@ PyAPI_FUNC(int) _PyUnicode_IsLinebreak(
PyAPI_FUNC(Py_UCS4) _PyUnicode_ToLowercase( PyAPI_FUNC(Py_UCS4) _PyUnicode_ToLowercase(
Py_UCS4 ch /* Unicode character */ Py_UCS4 ch /* Unicode character */
); ) /* Py_DEPRECATED(3.3) */;
PyAPI_FUNC(Py_UCS4) _PyUnicode_ToUppercase( PyAPI_FUNC(Py_UCS4) _PyUnicode_ToUppercase(
Py_UCS4 ch /* Unicode character */ Py_UCS4 ch /* Unicode character */
); ) /* Py_DEPRECATED(3.3) */;
PyAPI_FUNC(Py_UCS4) _PyUnicode_ToTitlecase( PyAPI_FUNC(Py_UCS4) _PyUnicode_ToTitlecase(
Py_UCS4 ch /* Unicode character */ Py_UCS4 ch /* Unicode character */
); ) Py_DEPRECATED(3.3);
PyAPI_FUNC(int) _PyUnicode_ToLowerFull( PyAPI_FUNC(int) _PyUnicode_ToLowerFull(
Py_UCS4 ch, /* Unicode character */ Py_UCS4 ch, /* Unicode character */
@ -2254,40 +2258,40 @@ PyAPI_FUNC(int) _PyUnicode_IsAlpha(
PyAPI_FUNC(size_t) Py_UNICODE_strlen( PyAPI_FUNC(size_t) Py_UNICODE_strlen(
const Py_UNICODE *u const Py_UNICODE *u
); ) Py_DEPRECATED(3.3);
PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strcpy( PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strcpy(
Py_UNICODE *s1, Py_UNICODE *s1,
const Py_UNICODE *s2); const Py_UNICODE *s2) Py_DEPRECATED(3.3);
PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strcat( PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strcat(
Py_UNICODE *s1, const Py_UNICODE *s2); Py_UNICODE *s1, const Py_UNICODE *s2) Py_DEPRECATED(3.3);
PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strncpy( PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strncpy(
Py_UNICODE *s1, Py_UNICODE *s1,
const Py_UNICODE *s2, const Py_UNICODE *s2,
size_t n); size_t n) Py_DEPRECATED(3.3);
PyAPI_FUNC(int) Py_UNICODE_strcmp( PyAPI_FUNC(int) Py_UNICODE_strcmp(
const Py_UNICODE *s1, const Py_UNICODE *s1,
const Py_UNICODE *s2 const Py_UNICODE *s2
); ) Py_DEPRECATED(3.3);
PyAPI_FUNC(int) Py_UNICODE_strncmp( PyAPI_FUNC(int) Py_UNICODE_strncmp(
const Py_UNICODE *s1, const Py_UNICODE *s1,
const Py_UNICODE *s2, const Py_UNICODE *s2,
size_t n size_t n
); ) Py_DEPRECATED(3.3);
PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strchr( PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strchr(
const Py_UNICODE *s, const Py_UNICODE *s,
Py_UNICODE c Py_UNICODE c
); ) Py_DEPRECATED(3.3);
PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strrchr( PyAPI_FUNC(Py_UNICODE*) Py_UNICODE_strrchr(
const Py_UNICODE *s, const Py_UNICODE *s,
Py_UNICODE c Py_UNICODE c
); ) Py_DEPRECATED(3.3);
PyAPI_FUNC(PyObject*) _PyUnicode_FormatLong(PyObject *, int, int, int); PyAPI_FUNC(PyObject*) _PyUnicode_FormatLong(PyObject *, int, int, int);
@ -2297,7 +2301,7 @@ PyAPI_FUNC(PyObject*) _PyUnicode_FormatLong(PyObject *, int, int, int);
PyAPI_FUNC(Py_UNICODE*) PyUnicode_AsUnicodeCopy( PyAPI_FUNC(Py_UNICODE*) PyUnicode_AsUnicodeCopy(
PyObject *unicode PyObject *unicode
); ) Py_DEPRECATED(3.3);
#endif /* Py_LIMITED_API */ #endif /* Py_LIMITED_API */
#if defined(Py_DEBUG) && !defined(Py_LIMITED_API) #if defined(Py_DEBUG) && !defined(Py_LIMITED_API)

View file

@ -410,6 +410,9 @@ Windows
C API C API
----- -----
- Issue #19569: Compiler warnings are now emitted if use most of deprecated
functions.
- Issue #28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(), - Issue #28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
PyUnicode_AsEncodedUnicode(). PyUnicode_AsEncodedUnicode().

View file

@ -1398,11 +1398,9 @@ static PyObject *
getargs_u(PyObject *self, PyObject *args) getargs_u(PyObject *self, PyObject *args)
{ {
Py_UNICODE *str; Py_UNICODE *str;
Py_ssize_t size;
if (!PyArg_ParseTuple(args, "u", &str)) if (!PyArg_ParseTuple(args, "u", &str))
return NULL; return NULL;
size = Py_UNICODE_strlen(str); return PyUnicode_FromWideChar(str, -1);
return PyUnicode_FromUnicode(str, size);
} }
static PyObject * static PyObject *
@ -1412,19 +1410,17 @@ getargs_u_hash(PyObject *self, PyObject *args)
Py_ssize_t size; Py_ssize_t size;
if (!PyArg_ParseTuple(args, "u#", &str, &size)) if (!PyArg_ParseTuple(args, "u#", &str, &size))
return NULL; return NULL;
return PyUnicode_FromUnicode(str, size); return PyUnicode_FromWideChar(str, size);
} }
static PyObject * static PyObject *
getargs_Z(PyObject *self, PyObject *args) getargs_Z(PyObject *self, PyObject *args)
{ {
Py_UNICODE *str; Py_UNICODE *str;
Py_ssize_t size;
if (!PyArg_ParseTuple(args, "Z", &str)) if (!PyArg_ParseTuple(args, "Z", &str))
return NULL; return NULL;
if (str != NULL) { if (str != NULL) {
size = Py_UNICODE_strlen(str); return PyUnicode_FromWideChar(str, -1);
return PyUnicode_FromUnicode(str, size);
} else } else
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@ -1437,7 +1433,7 @@ getargs_Z_hash(PyObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "Z#", &str, &size)) if (!PyArg_ParseTuple(args, "Z#", &str, &size))
return NULL; return NULL;
if (str != NULL) if (str != NULL)
return PyUnicode_FromUnicode(str, size); return PyUnicode_FromWideChar(str, size);
else else
Py_RETURN_NONE; Py_RETURN_NONE;
} }

View file

@ -236,7 +236,7 @@ BB_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
static PyObject * static PyObject *
u_getitem(arrayobject *ap, Py_ssize_t i) u_getitem(arrayobject *ap, Py_ssize_t i)
{ {
return PyUnicode_FromUnicode(&((Py_UNICODE *) ap->ob_item)[i], 1); return PyUnicode_FromOrdinal(((Py_UNICODE *) ap->ob_item)[i]);
} }
static int static int
@ -1693,7 +1693,7 @@ array_array_tounicode_impl(arrayobject *self)
"tounicode() may only be called on unicode type arrays"); "tounicode() may only be called on unicode type arrays");
return NULL; return NULL;
} }
return PyUnicode_FromUnicode((Py_UNICODE *) self->ob_item, Py_SIZE(self)); return PyUnicode_FromWideChar((Py_UNICODE *) self->ob_item, Py_SIZE(self));
} }
/*[clinic input] /*[clinic input]

View file

@ -251,14 +251,6 @@ PyObject_DelItemString(PyObject *o, const char *key)
/* We release the buffer right after use of this function which could /* We release the buffer right after use of this function which could
cause issues later on. Don't use these functions in new code. cause issues later on. Don't use these functions in new code.
*/ */
int
PyObject_AsCharBuffer(PyObject *obj,
const char **buffer,
Py_ssize_t *buffer_len)
{
return PyObject_AsReadBuffer(obj, (const void **)buffer, buffer_len);
}
int int
PyObject_CheckReadBuffer(PyObject *obj) PyObject_CheckReadBuffer(PyObject *obj)
{ {
@ -276,9 +268,8 @@ PyObject_CheckReadBuffer(PyObject *obj)
return 1; return 1;
} }
int PyObject_AsReadBuffer(PyObject *obj, static int
const void **buffer, as_read_buffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)
Py_ssize_t *buffer_len)
{ {
Py_buffer view; Py_buffer view;
@ -295,6 +286,21 @@ int PyObject_AsReadBuffer(PyObject *obj,
return 0; return 0;
} }
int
PyObject_AsCharBuffer(PyObject *obj,
const char **buffer,
Py_ssize_t *buffer_len)
{
return as_read_buffer(obj, (const void **)buffer, buffer_len);
}
int PyObject_AsReadBuffer(PyObject *obj,
const void **buffer,
Py_ssize_t *buffer_len)
{
return as_read_buffer(obj, buffer, buffer_len);
}
int PyObject_AsWriteBuffer(PyObject *obj, int PyObject_AsWriteBuffer(PyObject *obj,
void **buffer, void **buffer,
Py_ssize_t *buffer_len) Py_ssize_t *buffer_len)

View file

@ -2324,10 +2324,7 @@ bytearrayiter_reduce(bytesiterobject *it)
return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"), return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"),
it->it_seq, it->it_index); it->it_seq, it->it_index);
} else { } else {
PyObject *u = PyUnicode_FromUnicode(NULL, 0); return Py_BuildValue("N(())", _PyObject_GetBuiltin("iter"));
if (u == NULL)
return NULL;
return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), u);
} }
} }

View file

@ -3048,10 +3048,7 @@ striter_reduce(striterobject *it)
return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"), return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"),
it->it_seq, it->it_index); it->it_seq, it->it_index);
} else { } else {
PyObject *u = PyUnicode_FromUnicode(NULL, 0); return Py_BuildValue("N(())", _PyObject_GetBuiltin("iter"));
if (u == NULL)
return NULL;
return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), u);
} }
} }

View file

@ -115,7 +115,7 @@ PyCode_New(int argcount, int kwonlyargcount,
/* Check argument types */ /* Check argument types */
if (argcount < 0 || kwonlyargcount < 0 || nlocals < 0 || if (argcount < 0 || kwonlyargcount < 0 || nlocals < 0 ||
code == NULL || code == NULL || !PyBytes_Check(code) ||
consts == NULL || !PyTuple_Check(consts) || consts == NULL || !PyTuple_Check(consts) ||
names == NULL || !PyTuple_Check(names) || names == NULL || !PyTuple_Check(names) ||
varnames == NULL || !PyTuple_Check(varnames) || varnames == NULL || !PyTuple_Check(varnames) ||
@ -123,8 +123,7 @@ PyCode_New(int argcount, int kwonlyargcount,
cellvars == NULL || !PyTuple_Check(cellvars) || cellvars == NULL || !PyTuple_Check(cellvars) ||
name == NULL || !PyUnicode_Check(name) || name == NULL || !PyUnicode_Check(name) ||
filename == NULL || !PyUnicode_Check(filename) || filename == NULL || !PyUnicode_Check(filename) ||
lnotab == NULL || !PyBytes_Check(lnotab) || lnotab == NULL || !PyBytes_Check(lnotab)) {
!PyObject_CheckReadBuffer(code)) {
PyErr_BadInternalCall(); PyErr_BadInternalCall();
return NULL; return NULL;
} }

View file

@ -2479,7 +2479,7 @@ _PyLong_FromBytes(const char *s, Py_ssize_t len, int base)
PyObject * PyObject *
PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base) PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)
{ {
PyObject *v, *unicode = PyUnicode_FromUnicode(u, length); PyObject *v, *unicode = PyUnicode_FromWideChar(u, length);
if (unicode == NULL) if (unicode == NULL)
return NULL; return NULL;
v = PyLong_FromUnicodeObject(unicode, base); v = PyLong_FromUnicodeObject(unicode, base);

View file

@ -1987,13 +1987,33 @@ unicode_char(Py_UCS4 ch)
PyObject * PyObject *
PyUnicode_FromUnicode(const Py_UNICODE *u, Py_ssize_t size) PyUnicode_FromUnicode(const Py_UNICODE *u, Py_ssize_t size)
{
if (u == NULL)
return (PyObject*)_PyUnicode_New(size);
if (size < 0) {
PyErr_BadInternalCall();
return NULL;
}
return PyUnicode_FromWideChar(u, size);
}
PyObject *
PyUnicode_FromWideChar(const wchar_t *u, Py_ssize_t size)
{ {
PyObject *unicode; PyObject *unicode;
Py_UCS4 maxchar = 0; Py_UCS4 maxchar = 0;
Py_ssize_t num_surrogates; Py_ssize_t num_surrogates;
if (u == NULL) if (u == NULL && size != 0) {
return (PyObject*)_PyUnicode_New(size); PyErr_BadInternalCall();
return NULL;
}
if (size == -1) {
size = wcslen(u);
}
/* If the Unicode data is known at construction time, we can apply /* If the Unicode data is known at construction time, we can apply
some optimizations which share commonly used objects. */ some optimizations which share commonly used objects. */
@ -2478,27 +2498,6 @@ PyUnicode_AsUCS4Copy(PyObject *string)
return as_ucs4(string, NULL, 0, 1); return as_ucs4(string, NULL, 0, 1);
} }
#ifdef HAVE_WCHAR_H
PyObject *
PyUnicode_FromWideChar(const wchar_t *w, Py_ssize_t size)
{
if (w == NULL) {
if (size == 0)
_Py_RETURN_UNICODE_EMPTY();
PyErr_BadInternalCall();
return NULL;
}
if (size == -1) {
size = wcslen(w);
}
return PyUnicode_FromUnicode(w, size);
}
#endif /* HAVE_WCHAR_H */
/* maximum number of characters required for output of %lld or %p. /* maximum number of characters required for output of %lld or %p.
We need at most ceil(log10(256)*SIZEOF_LONG_LONG) digits, We need at most ceil(log10(256)*SIZEOF_LONG_LONG) digits,
plus 1 for the sign. 53/22 is an upper bound for log10(256). */ plus 1 for the sign. 53/22 is an upper bound for log10(256). */
@ -3296,7 +3295,7 @@ PyUnicode_Encode(const Py_UNICODE *s,
{ {
PyObject *v, *unicode; PyObject *v, *unicode;
unicode = PyUnicode_FromUnicode(s, size); unicode = PyUnicode_FromWideChar(s, size);
if (unicode == NULL) if (unicode == NULL)
return NULL; return NULL;
v = PyUnicode_AsEncodedString(unicode, encoding, errors); v = PyUnicode_AsEncodedString(unicode, encoding, errors);
@ -4129,7 +4128,11 @@ PyUnicode_GetSize(PyObject *unicode)
PyErr_BadArgument(); PyErr_BadArgument();
goto onError; goto onError;
} }
return PyUnicode_GET_SIZE(unicode); if (_PyUnicode_WSTR(unicode) == NULL) {
if (PyUnicode_AsUnicode(unicode) == NULL)
goto onError;
}
return PyUnicode_WSTR_LENGTH(unicode);
onError: onError:
return -1; return -1;
@ -4815,7 +4818,7 @@ PyUnicode_EncodeUTF7(const Py_UNICODE *s,
const char *errors) const char *errors)
{ {
PyObject *result; PyObject *result;
PyObject *tmp = PyUnicode_FromUnicode(s, size); PyObject *tmp = PyUnicode_FromWideChar(s, size);
if (tmp == NULL) if (tmp == NULL)
return NULL; return NULL;
result = _PyUnicode_EncodeUTF7(tmp, base64SetO, result = _PyUnicode_EncodeUTF7(tmp, base64SetO,
@ -5171,7 +5174,7 @@ PyUnicode_EncodeUTF8(const Py_UNICODE *s,
{ {
PyObject *v, *unicode; PyObject *v, *unicode;
unicode = PyUnicode_FromUnicode(s, size); unicode = PyUnicode_FromWideChar(s, size);
if (unicode == NULL) if (unicode == NULL)
return NULL; return NULL;
v = _PyUnicode_AsUTF8String(unicode, errors); v = _PyUnicode_AsUTF8String(unicode, errors);
@ -5496,7 +5499,7 @@ PyUnicode_EncodeUTF32(const Py_UNICODE *s,
int byteorder) int byteorder)
{ {
PyObject *result; PyObject *result;
PyObject *tmp = PyUnicode_FromUnicode(s, size); PyObject *tmp = PyUnicode_FromWideChar(s, size);
if (tmp == NULL) if (tmp == NULL)
return NULL; return NULL;
result = _PyUnicode_EncodeUTF32(tmp, errors, byteorder); result = _PyUnicode_EncodeUTF32(tmp, errors, byteorder);
@ -5849,7 +5852,7 @@ PyUnicode_EncodeUTF16(const Py_UNICODE *s,
int byteorder) int byteorder)
{ {
PyObject *result; PyObject *result;
PyObject *tmp = PyUnicode_FromUnicode(s, size); PyObject *tmp = PyUnicode_FromWideChar(s, size);
if (tmp == NULL) if (tmp == NULL)
return NULL; return NULL;
result = _PyUnicode_EncodeUTF16(tmp, errors, byteorder); result = _PyUnicode_EncodeUTF16(tmp, errors, byteorder);
@ -6246,7 +6249,7 @@ PyUnicode_EncodeUnicodeEscape(const Py_UNICODE *s,
Py_ssize_t size) Py_ssize_t size)
{ {
PyObject *result; PyObject *result;
PyObject *tmp = PyUnicode_FromUnicode(s, size); PyObject *tmp = PyUnicode_FromWideChar(s, size);
if (tmp == NULL) { if (tmp == NULL) {
return NULL; return NULL;
} }
@ -6463,7 +6466,7 @@ PyUnicode_EncodeRawUnicodeEscape(const Py_UNICODE *s,
Py_ssize_t size) Py_ssize_t size)
{ {
PyObject *result; PyObject *result;
PyObject *tmp = PyUnicode_FromUnicode(s, size); PyObject *tmp = PyUnicode_FromWideChar(s, size);
if (tmp == NULL) if (tmp == NULL)
return NULL; return NULL;
result = PyUnicode_AsRawUnicodeEscapeString(tmp); result = PyUnicode_AsRawUnicodeEscapeString(tmp);
@ -6874,7 +6877,7 @@ PyUnicode_EncodeLatin1(const Py_UNICODE *p,
const char *errors) const char *errors)
{ {
PyObject *result; PyObject *result;
PyObject *unicode = PyUnicode_FromUnicode(p, size); PyObject *unicode = PyUnicode_FromWideChar(p, size);
if (unicode == NULL) if (unicode == NULL)
return NULL; return NULL;
result = unicode_encode_ucs1(unicode, errors, 256); result = unicode_encode_ucs1(unicode, errors, 256);
@ -7015,7 +7018,7 @@ PyUnicode_EncodeASCII(const Py_UNICODE *p,
const char *errors) const char *errors)
{ {
PyObject *result; PyObject *result;
PyObject *unicode = PyUnicode_FromUnicode(p, size); PyObject *unicode = PyUnicode_FromWideChar(p, size);
if (unicode == NULL) if (unicode == NULL)
return NULL; return NULL;
result = unicode_encode_ucs1(unicode, errors, 128); result = unicode_encode_ucs1(unicode, errors, 128);
@ -7741,7 +7744,7 @@ PyUnicode_EncodeMBCS(const Py_UNICODE *p,
const char *errors) const char *errors)
{ {
PyObject *unicode, *res; PyObject *unicode, *res;
unicode = PyUnicode_FromUnicode(p, size); unicode = PyUnicode_FromWideChar(p, size);
if (unicode == NULL) if (unicode == NULL)
return NULL; return NULL;
res = encode_code_page(CP_ACP, unicode, errors); res = encode_code_page(CP_ACP, unicode, errors);
@ -8589,7 +8592,7 @@ PyUnicode_EncodeCharmap(const Py_UNICODE *p,
const char *errors) const char *errors)
{ {
PyObject *result; PyObject *result;
PyObject *unicode = PyUnicode_FromUnicode(p, size); PyObject *unicode = PyUnicode_FromWideChar(p, size);
if (unicode == NULL) if (unicode == NULL)
return NULL; return NULL;
result = _PyUnicode_EncodeCharmap(unicode, mapping, errors); result = _PyUnicode_EncodeCharmap(unicode, mapping, errors);
@ -9029,7 +9032,7 @@ PyUnicode_TranslateCharmap(const Py_UNICODE *p,
const char *errors) const char *errors)
{ {
PyObject *result; PyObject *result;
PyObject *unicode = PyUnicode_FromUnicode(p, size); PyObject *unicode = PyUnicode_FromWideChar(p, size);
if (!unicode) if (!unicode)
return NULL; return NULL;
result = _PyUnicode_TranslateCharmap(unicode, mapping, errors); result = _PyUnicode_TranslateCharmap(unicode, mapping, errors);
@ -9157,14 +9160,10 @@ PyUnicode_EncodeDecimal(Py_UNICODE *s,
return -1; return -1;
} }
unicode = PyUnicode_FromUnicode(s, length); unicode = PyUnicode_FromWideChar(s, length);
if (unicode == NULL) if (unicode == NULL)
return -1; return -1;
if (PyUnicode_READY(unicode) == -1) {
Py_DECREF(unicode);
return -1;
}
kind = PyUnicode_KIND(unicode); kind = PyUnicode_KIND(unicode);
data = PyUnicode_DATA(unicode); data = PyUnicode_DATA(unicode);
@ -15332,7 +15331,7 @@ unicodeiter_reduce(unicodeiterobject *it)
return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"), return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"),
it->it_seq, it->it_index); it->it_seq, it->it_index);
} else { } else {
PyObject *u = PyUnicode_FromUnicode(NULL, 0); PyObject *u = (PyObject *)_PyUnicode_New(0);
if (u == NULL) if (u == NULL)
return NULL; return NULL;
return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), u); return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), u);
@ -15427,10 +15426,7 @@ unicode_iter(PyObject *seq)
size_t size_t
Py_UNICODE_strlen(const Py_UNICODE *u) Py_UNICODE_strlen(const Py_UNICODE *u)
{ {
int res = 0; return wcslen(u);
while(*u++)
res++;
return res;
} }
Py_UNICODE* Py_UNICODE*
@ -15455,8 +15451,8 @@ Py_UNICODE*
Py_UNICODE_strcat(Py_UNICODE *s1, const Py_UNICODE *s2) Py_UNICODE_strcat(Py_UNICODE *s1, const Py_UNICODE *s2)
{ {
Py_UNICODE *u1 = s1; Py_UNICODE *u1 = s1;
u1 += Py_UNICODE_strlen(u1); u1 += wcslen(u1);
Py_UNICODE_strcpy(u1, s2); while ((*u1++ = *s2++));
return s1; return s1;
} }
@ -15505,7 +15501,7 @@ Py_UNICODE*
Py_UNICODE_strrchr(const Py_UNICODE *s, Py_UNICODE c) Py_UNICODE_strrchr(const Py_UNICODE *s, Py_UNICODE c)
{ {
const Py_UNICODE *p; const Py_UNICODE *p;
p = s + Py_UNICODE_strlen(s); p = s + wcslen(s);
while (p != s) { while (p != s) {
p--; p--;
if (*p == c) if (*p == c)

View file

@ -582,9 +582,7 @@ PyErr_SetFromErrnoWithFilename(PyObject *exc, const char *filename)
PyObject * PyObject *
PyErr_SetFromErrnoWithUnicodeFilename(PyObject *exc, const Py_UNICODE *filename) PyErr_SetFromErrnoWithUnicodeFilename(PyObject *exc, const Py_UNICODE *filename)
{ {
PyObject *name = filename ? PyObject *name = filename ? PyUnicode_FromWideChar(filename, -1) : NULL;
PyUnicode_FromUnicode(filename, wcslen(filename)) :
NULL;
PyObject *result = PyErr_SetFromErrnoWithFilenameObjects(exc, name, NULL); PyObject *result = PyErr_SetFromErrnoWithFilenameObjects(exc, name, NULL);
Py_XDECREF(name); Py_XDECREF(name);
return result; return result;
@ -691,9 +689,7 @@ PyObject *PyErr_SetExcFromWindowsErrWithUnicodeFilename(
int ierr, int ierr,
const Py_UNICODE *filename) const Py_UNICODE *filename)
{ {
PyObject *name = filename ? PyObject *name = filename ? PyUnicode_FromWideChar(filename, -1) : NULL;
PyUnicode_FromUnicode(filename, wcslen(filename)) :
NULL;
PyObject *ret = PyErr_SetExcFromWindowsErrWithFilenameObjects(exc, PyObject *ret = PyErr_SetExcFromWindowsErrWithFilenameObjects(exc,
ierr, ierr,
name, name,
@ -729,9 +725,7 @@ PyObject *PyErr_SetFromWindowsErrWithUnicodeFilename(
int ierr, int ierr,
const Py_UNICODE *filename) const Py_UNICODE *filename)
{ {
PyObject *name = filename ? PyObject *name = filename ? PyUnicode_FromWideChar(filename, -1) : NULL;
PyUnicode_FromUnicode(filename, wcslen(filename)) :
NULL;
PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObjects( PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObjects(
PyExc_OSError, PyExc_OSError,
ierr, name, NULL); ierr, name, NULL);

View file

@ -1027,7 +1027,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
*p = PyUnicode_AsUnicodeAndSize(arg, &len); *p = PyUnicode_AsUnicodeAndSize(arg, &len);
if (*p == NULL) if (*p == NULL)
RETURN_ERR_OCCURRED; RETURN_ERR_OCCURRED;
if (Py_UNICODE_strlen(*p) != (size_t)len) { if (wcslen(*p) != (size_t)len) {
PyErr_SetString(PyExc_ValueError, "embedded null character"); PyErr_SetString(PyExc_ValueError, "embedded null character");
RETURN_ERR_OCCURRED; RETURN_ERR_OCCURRED;
} }
@ -1074,9 +1074,14 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
(PyBytes_Check(arg) || PyByteArray_Check(arg))) { (PyBytes_Check(arg) || PyByteArray_Check(arg))) {
s = arg; s = arg;
Py_INCREF(s); Py_INCREF(s);
if (PyObject_AsCharBuffer(s, &ptr, &size) < 0) if (PyBytes_Check(arg)) {
return converterr("(AsCharBuffer failed)", size = PyBytes_GET_SIZE(s);
arg, msgbuf, bufsize); ptr = PyBytes_AS_STRING(s);
}
else {
size = PyByteArray_GET_SIZE(s);
ptr = PyByteArray_AS_STRING(s);
}
} }
else if (PyUnicode_Check(arg)) { else if (PyUnicode_Check(arg)) {
/* Encode object; use default error handling */ /* Encode object; use default error handling */

View file

@ -286,8 +286,8 @@ do_mkvalue(const char **p_format, va_list *p_va, int flags)
} }
else { else {
if (n < 0) if (n < 0)
n = Py_UNICODE_strlen(u); n = wcslen(u);
v = PyUnicode_FromUnicode(u, n); v = PyUnicode_FromWideChar(u, n);
} }
return v; return v;
} }