Extended zjturner's changes to encompass all function dispatch and use PyErr_WriteUnraisable to handle exceptions during __del__.

Also added test cases for the unnamed temporary destruction that is throwing assertions in Python 3.5.
This commit is contained in:
Brian Cole 2015-12-15 08:39:55 -07:00
commit a863e98874
4 changed files with 48 additions and 7 deletions

View file

@ -58,6 +58,7 @@ CPP_TEST_CASES += \
primitive_types \
python_abstractbase \
python_append \
python_destructor_exception \
python_director \
python_docstring \
python_nondynamic \

View file

@ -0,0 +1,14 @@
import python_destructor_exception
from StringIO import StringIO
import sys
#buffer = StringIO()
#sys.stderr = buffer
attributeErrorOccurred = False
try:
python_destructor_exception.ClassWithThrowingDestructor().GetBlah()
except AttributeError, e:
attributeErrorOccurred = True
assert attributeErrorOccurred

View file

@ -0,0 +1,17 @@
/* File : example.i */
%module python_destructor_exception
%include exception.i
%exception ClassWithThrowingDestructor::~ClassWithThrowingDestructor()
{
$action
SWIG_exception(SWIG_RuntimeError, "I am the ClassWithThrowingDestructor dtor doing bad things");
}
%inline %{
class ClassWithThrowingDestructor
{
};
%}