Victor Stinner [Fri, 13 Dec 2013 10:08:56 +0000 (11:08 +0100)]
Issue #19787: PyThread_set_key_value() now always set the value
In Python 3.3, PyThread_set_key_value() did nothing if the key already exists
(if the current value is a non-NULL pointer).
When _PyGILState_NoteThreadState() is called twice on the same thread with a
different Python thread state, it still keeps the old Python thread state to
keep the old behaviour. Replacing the Python thread state with the new state
introduces new bugs: see issues #10915 and #15751.
Victor Stinner [Fri, 13 Dec 2013 02:22:00 +0000 (03:22 +0100)]
Close #19787: PyThread_set_key_value() now always set the value. In Python 3.3,
the function did nothing if the key already exists (if the current value is a
non-NULL pointer).
_testcapi.run_in_subinterp() now correctly sets the new Python thread state of
the current thread when a subinterpreter is created.
Victor Stinner [Fri, 13 Dec 2013 01:17:29 +0000 (02:17 +0100)]
Issue #14432: Generator now clears the borrowed reference to the thread state
Fix a crash when a generator is created in a C thread that is destroyed while
the generator is still used. The issue was that a generator contains a frame,
and the frame kept a reference to the Python state of the destroyed C thread.
The crash occurs when a trace function is setup.
Victor Stinner [Fri, 13 Dec 2013 01:01:38 +0000 (02:01 +0100)]
Issue #14432: Remove the thread state field from the frame structure. Fix a
crash when a generator is created in a C thread that is destroyed while the
generator is still used. The issue was that a generator contains a frame, and
the frame kept a reference to the Python state of the destroyed C thread. The
crash occurs when a trace function is setup.
Victor Stinner [Fri, 13 Dec 2013 00:46:43 +0000 (01:46 +0100)]
Close #19576: PyGILState_Ensure() now initializes threads. At startup, Python
has no concrete GIL. If PyGILState_Ensure() is called from a new thread for the
first time and PyEval_InitThreads() was not called yet, a GIL needs to be
created.
R David Murray [Wed, 11 Dec 2013 21:34:34 +0000 (16:34 -0500)]
#19063: partially fix set_payload handling of non-ASCII string input.
This is a backward compatible partial fix, the complete fix requires raising
an error instead of accepting the invalid input, so the real fix is only
suitable for 3.4.
Serhiy Storchaka [Wed, 11 Dec 2013 19:26:36 +0000 (21:26 +0200)]
Issue #17576: Deprecation warning emitted now when __int__() or __index__()
return not int instance. Introduced _PyLong_FromNbInt() and refactored
PyLong_As*() functions.
Serhiy Storchaka [Wed, 11 Dec 2013 19:07:54 +0000 (21:07 +0200)]
Issue #17576: Deprecation warning emitted now when __int__() or __index__()
return not int instance. Introduced _PyLong_FromNbInt() and refactored
PyLong_As*() functions.
Gregory P. Smith [Wed, 11 Dec 2013 02:25:21 +0000 (18:25 -0800)]
Fixes Issue #17200: telnetlib's read_until and expect timeout was broken by the
fix to Issue #14635 in Python 3.3.0 to be interpreted as milliseconds instead
of seconds when the platform supports select.poll (ie: everywhere). It is now
treated as seconds once again.
Victor Stinner [Sun, 8 Dec 2013 23:04:09 +0000 (00:04 +0100)]
(Merge 3.3) Issue #17429: platform.linux_distribution() now decodes files from
the UTF-8 encoding with the surrogateescape error handler, instead of decoding
from the locale encoding in strict mode. It fixes the function on Fedora 19
which is probably the first major distribution release with a non-ASCII name.
Patch written by Toshio Kuratomi.
Victor Stinner [Sun, 8 Dec 2013 23:01:27 +0000 (00:01 +0100)]
Issue #17429: platform.linux_distribution() now decodes files from the UTF-8
encoding with the surrogateescape error handler, instead of decoding from the
locale encoding in strict mode. It fixes the function on Fedora 19 which is
probably the first major distribution release with a non-ASCII name. Patch
written by Toshio Kuratomi.
Fixes issue #19929: Call os.read with 32768 within subprocess.Popen
communicate rather than 4096 for efficiency. A microbenchmark shows
Linux and OS X both using ~50% less cpu time this way.
Fixes issue #19929: Call os.read with 32768 within subprocess.Popen
communicate rather than 4096 for efficiency. A microbenchmark shows
Linux and OS X both using ~50% less cpu time this way.
Remove mentions of Python 2.x and being externally maintained from
the bundled json module. Replace that with a mention of it being
a version of the externally maintained simplejson module.
Remove mentions of Python 2.x and being externally maintained from
the bundled json module. Replace that with a mention of it being
a version of the externally maintained simplejson module.