mirror of https://github.com/python/cpython
Merge 3.5 (fix raise)
This commit is contained in:
commit
0a6996d87d
|
@ -1043,6 +1043,24 @@ class ThreadingExceptionTests(BaseTestCase):
|
||||||
self.assertEqual(out, b'')
|
self.assertEqual(out, b'')
|
||||||
self.assertNotIn("Unhandled exception", err.decode())
|
self.assertNotIn("Unhandled exception", err.decode())
|
||||||
|
|
||||||
|
def test_bare_raise_in_brand_new_thread(self):
|
||||||
|
def bare_raise():
|
||||||
|
raise
|
||||||
|
|
||||||
|
class Issue27558(threading.Thread):
|
||||||
|
exc = None
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
try:
|
||||||
|
bare_raise()
|
||||||
|
except Exception as exc:
|
||||||
|
self.exc = exc
|
||||||
|
|
||||||
|
thread = Issue27558()
|
||||||
|
thread.start()
|
||||||
|
thread.join()
|
||||||
|
self.assertIsNotNone(thread.exc)
|
||||||
|
self.assertIsInstance(thread.exc, RuntimeError)
|
||||||
|
|
||||||
class TimerTests(BaseTestCase):
|
class TimerTests(BaseTestCase):
|
||||||
|
|
||||||
|
|
|
@ -10,12 +10,17 @@ What's New in Python 3.6.0 beta 1
|
||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #27558: Fix a SystemError in the implementation of "raise" statement.
|
||||||
|
In a brand new thread, raise a RuntimeError since there is no active
|
||||||
|
exception to reraise. Patch written by Xiang Zhang.
|
||||||
|
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
- Issue #9998: On Linux, ctypes.util.find_library now looks in LD_LIBRARY_PATH
|
- Issue #9998: On Linux, ctypes.util.find_library now looks in LD_LIBRARY_PATH
|
||||||
for shared libraries.
|
for shared libraries.
|
||||||
|
|
||||||
|
|
||||||
What's New in Python 3.6.0 alpha 4
|
What's New in Python 3.6.0 alpha 4
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
|
|
|
@ -4154,7 +4154,7 @@ do_raise(PyObject *exc, PyObject *cause)
|
||||||
type = tstate->exc_type;
|
type = tstate->exc_type;
|
||||||
value = tstate->exc_value;
|
value = tstate->exc_value;
|
||||||
tb = tstate->exc_traceback;
|
tb = tstate->exc_traceback;
|
||||||
if (type == Py_None) {
|
if (type == Py_None || type == NULL) {
|
||||||
PyErr_SetString(PyExc_RuntimeError,
|
PyErr_SetString(PyExc_RuntimeError,
|
||||||
"No active exception to reraise");
|
"No active exception to reraise");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue