Victor Stinner
a1d12bb119
Call directly PyUnicode_DecodeUTF8Stateful() instead of PyUnicode_DecodeUTF8()
* Remove micro-optimization from PyUnicode_FromStringAndSize():
PyUnicode_DecodeUTF8Stateful() has already these optimizations (for size=0
and one ascii char).
* Rename utf8_max_char_size_and_char_count() to utf8_scanner(), and remove an
useless variable
15 years ago
Victor Stinner
382955ff4e
Use directly unicode_empty instead of PyUnicode_New(0, 0)
15 years ago
Victor Stinner
785938eebd
Move the slowest UTF-8 decoder to its own subfunction
* Create decode_utf8_errors()
* Reuse unicode_fromascii()
* decode_utf8_errors() doesn't refit at the beginning
* Remove refit_partial_string(), use unicode_adjust_maxchar() instead
15 years ago
Victor Stinner
84def3774d
Fix error handling in resize_compact()
15 years ago
Victor Stinner
8faf8216e4
PyUnicode_FromWideChar() and PyUnicode_FromUnicode() raise a ValueError if a
character in not in range [U+0000; U+10ffff].
15 years ago
Victor Stinner
551ac95733
Py_UNICODE_HIGH_SURROGATE() and Py_UNICODE_LOW_SURROGATE() macros
And use surrogates macros everywhere in unicodeobject.c
15 years ago
Victor Stinner
6345be9a14
Close #13093 : PyUnicode_EncodeDecimal() doesn't support error handlers
different than "strict" anymore. The caller was unable to compute the
size of the output buffer: it depends on the error handler.
15 years ago
Benjamin Peterson
1518e8713d
and back to the "magic" formula (with a comment) it is
15 years ago
Benjamin Peterson
5944c36931
cave to those who like readable code
15 years ago
Benjamin Peterson
0268675193
fix compiler warning by implementing this more cleverly
15 years ago
Victor Stinner
ca4f20782e
find_maxchar_surrogates() reuses surrogate macros
15 years ago
Victor Stinner
0d3721d986
Issue #13441 : Disable temporary the check on the maximum character until
the Solaris issue is solved.
But add assertion on the maximum character in various encoders: UTF-7, UTF-8,
wide character (wchar_t*, Py_UNICODE*), unicode-escape, raw-unicode-escape.
Fix also unicode_encode_ucs1() for backslashreplace error handler: Python is
now always "wide".
15 years ago
Victor Stinner
f8facacf30
Fix compiler warnings
15 years ago
Victor Stinner
b84d723509
(Merge 3.2) Issue #13093 : Fix error handling on PyUnicode_EncodeDecimal()
15 years ago
Victor Stinner
ab1d16b456
Issue #13093 : Fix error handling on PyUnicode_EncodeDecimal()
* Add tests for PyUnicode_EncodeDecimal() and PyUnicode_TransformDecimalToASCII()
* Remove the unused "e" variable in replace()
15 years ago
Victor Stinner
cfed46e00a
PyUnicode_FromKindAndData() fails with a ValueError if size < 0
15 years ago
Victor Stinner
42885206ec
UTF-8 decoder: set consumed value in the latin1 fast-path
15 years ago
Victor Stinner
d3df8ab377
Replace _PyUnicode_READY_REPLACE() and _PyUnicode_ReadyReplace() with unicode_ready()
* unicode_ready() has a simpler API
* try to reuse unicode_empty and latin1_char singleton everywhere
* Fix a reference leak in _PyUnicode_TranslateCharmap()
* PyUnicode_InternInPlace() doesn't try to get a singleton anymore, to avoid
having to handle a failure
15 years ago
Victor Stinner
f01245067a
Rewrite PyUnicode_TransformDecimalToASCII() to use the new Unicode API
15 years ago
Victor Stinner
2d718f39a5
Remove an unused variable from PyUnicode_Copy()
15 years ago
Victor Stinner
87af4f2f3a
Simplify PyUnicode_Copy()
USe PyUnicode_Copy() in fixup()
15 years ago
Victor Stinner
5bbe5e7c85
Fix a compiler warning in _PyUnicode_CheckConsistency()
15 years ago
Victor Stinner
42bf77537e
Rewrite PyUnicode_EncodeDecimal() to use the new Unicode API
Add tests for PyUnicode_EncodeDecimal() and
PyUnicode_TransformDecimalToASCII().
15 years ago
Antoine Pitrou
0a3229de6b
Issue #13417 : speed up utf-8 decoding by around 2x for the non-fully-ASCII case.
This almost catches up with pre-PEP 393 performance, when decoding needed
only one pass.
15 years ago
Victor Stinner
da29cc36aa
Issue #13441 : _PyUnicode_CheckConsistency() dumps the string if the maximum
character is bigger than U+10FFFF and locale.localeconv() dumps the string
before decoding it.
Temporary hack to debug the issue #13441 .
15 years ago
Victor Stinner
9e30aa52fd
Fix misuse of PyUnicode_GET_SIZE() => PyUnicode_GET_LENGTH()
And PyUnicode_GetSize() => PyUnicode_GetLength()
15 years ago
Victor Stinner
4ead7c7be8
PyObject_Str() ensures that the result string is ready
and check the string consistency.
_PyUnicode_CheckConsistency() doesn't check the hash anymore. It should be
possible to call this function even if hash(str) was already called.
15 years ago
Victor Stinner
b960b34577
PyUnicode_AsUTF32String() calls directly _PyUnicode_EncodeUTF32(),
instead of calling the deprecated PyUnicode_EncodeUTF32() function
15 years ago
Victor Stinner
77faf69ca1
_PyUnicode_CheckConsistency() also checks maxchar maximum value,
not only its minimum value
15 years ago
Victor Stinner
d5c4022d2a
Remove the two ugly and unused WRITE_ASCII_OR_WSTR and WRITE_WSTR macros
15 years ago
Victor Stinner
2e9cfadd7c
Reuse surrogate macros in UTF-16 decoder
15 years ago
Victor Stinner
ae4f7c8e59
charmap_encoding_error() uses the new Unicode API
15 years ago
Victor Stinner
ac931b1e5b
Use PyUnicode_EncodeCodePage() instead of PyUnicode_EncodeMBCS() with
PyUnicode_AsUnicodeAndSize()
15 years ago
Victor Stinner
22168998f5
charmap encoders uses Py_UCS4, not Py_UNICODE
15 years ago
Victor Stinner
1f7951711c
Catch PyUnicode_AS_UNICODE() errors
15 years ago
Ezio Melotti
11060a4a48
#13406 : silence deprecation warnings in test_codecs.
15 years ago
Antoine Pitrou
5418ee0b9a
Issue #13333 : The UTF-7 decoder now accepts lone surrogates
(the encoder already accepts them).
15 years ago
Antoine Pitrou
31b92a534f
Sanitize reference management in the utf-8 encoder
15 years ago
Antoine Pitrou
0290c7a811
Fix regression on 2-byte wchar_t systems (Windows)
15 years ago
Antoine Pitrou
44c6affc79
Avoid crashing because of an unaligned word access
15 years ago
Antoine Pitrou
de20b0b50e
Issue #13149 : Speed up append-only StringIO objects.
This is very similar to the "lazy strings" idea.
15 years ago
Victor Stinner
9f4b1e9c50
Fix and deprecated the unicode_internal codec
unicode_internal codec uses Py_UNICODE instead of the real internal
representation (PEP 393: Py_UCS1, Py_UCS2 or Py_UCS4) for backward
compatibility.
15 years ago
Victor Stinner
24729f36bf
Prefer Py_UCS4 or wchar_t over Py_UNICODE
15 years ago
Victor Stinner
ebf3ba808e
PyUnicode_DecodeCharmap() uses the new Unicode API
15 years ago
Victor Stinner
a98b28c1bf
Avoid PyUnicode_AS_UNICODE in the UTF-8 encoder
15 years ago
Victor Stinner
3326cb6a36
Fix "unicode_escape" encoder
15 years ago
Victor Stinner
0e36826a04
Fix UTF-7 encoder on Windows
15 years ago
Martin v. Löwis
1db7c13be1
Port encoders from Py_UNICODE API to unicode object API.
15 years ago
Victor Stinner
62aa4d086a
Strip trailing spaces
15 years ago
Victor Stinner
0a045efb49
Fix a compiler warning: use unsiged for maxchar in unicode_widen()
15 years ago