diff options
Diffstat (limited to 'Python/fileutils.c')
| -rw-r--r-- | Python/fileutils.c | 15 | 
1 files changed, 8 insertions, 7 deletions
| diff --git a/Python/fileutils.c b/Python/fileutils.c index b7c42e8..e759856 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -16,13 +16,13 @@ extern wchar_t* _Py_DecodeUTF8_surrogateescape(const char *s, Py_ssize_t size);  PyObject *  _Py_device_encoding(int fd)  { -#if defined(MS_WINDOWS) || defined(MS_WIN64) +#if defined(MS_WINDOWS)      UINT cp;  #endif      if (!_PyVerify_fd(fd) || !isatty(fd)) {          Py_RETURN_NONE;      } -#if defined(MS_WINDOWS) || defined(MS_WIN64) +#if defined(MS_WINDOWS)      if (fd == 0)          cp = GetConsoleCP();      else if (fd == 1 || fd == 2) @@ -60,7 +60,7 @@ extern int _Py_normalize_encoding(const char *, char *, size_t);     workaround is also enabled on error, for example if getting the locale     failed. -   Values of locale_is_ascii: +   Values of force_ascii:         1: the workaround is used: _Py_wchar2char() uses            encode_ascii_surrogateescape() and _Py_char2wchar() uses @@ -254,9 +254,9 @@ _Py_char2wchar(const char* arg, size_t *size)      wchar_t *res;      size_t argsize;      size_t count; +#ifdef HAVE_MBRTOWC      unsigned char *in;      wchar_t *out; -#ifdef HAVE_MBRTOWC      mbstate_t mbs;  #endif @@ -292,7 +292,7 @@ _Py_char2wchar(const char* arg, size_t *size)              /* Only use the result if it contains no                 surrogate characters. */              for (tmp = res; *tmp != 0 && -                         (*tmp < 0xd800 || *tmp > 0xdfff); tmp++) +                         !Py_UNICODE_IS_SURROGATE(*tmp); tmp++)                  ;              if (*tmp == 0) {                  if (size != NULL) @@ -338,7 +338,7 @@ _Py_char2wchar(const char* arg, size_t *size)              memset(&mbs, 0, sizeof mbs);              continue;          } -        if (*out >= 0xd800 && *out <= 0xdfff) { +        if (Py_UNICODE_IS_SURROGATE(*out)) {              /* Surrogate character.  Escape the original                 byte sequence with surrogateescape. */              argsize -= converted; @@ -707,7 +707,8 @@ wchar_t*  _Py_wgetcwd(wchar_t *buf, size_t size)  {  #ifdef MS_WINDOWS -    return _wgetcwd(buf, size); +    int isize = (int)Py_MIN(size, INT_MAX); +    return _wgetcwd(buf, isize);  #else      char fname[PATH_MAX];      wchar_t *wname; | 
