Commit d96606e2 authored by Peter Eastman's avatar Peter Eastman
Browse files

Ensure Python interpreter lock gets reacquired when an exception is thrown.

parent 53d469c5
......@@ -9,23 +9,25 @@
}
%exception *::step {
PyThreadState* _savePythonThreadState = PyEval_SaveThread();
try {
Py_BEGIN_ALLOW_THREADS
$action
Py_END_ALLOW_THREADS
} catch (std::exception &e) {
PyEval_RestoreThread(_savePythonThreadState);
PyErr_SetString(PyExc_Exception, const_cast<char*>(e.what()));
return NULL;
}
PyEval_RestoreThread(_savePythonThreadState);
}
%exception OpenMM::LocalEnergyMinimizer::minimize {
PyThreadState* _savePythonThreadState = PyEval_SaveThread();
try {
Py_BEGIN_ALLOW_THREADS
$action
Py_END_ALLOW_THREADS
} catch (std::exception &e) {
PyEval_RestoreThread(_savePythonThreadState);
PyErr_SetString(PyExc_Exception, const_cast<char*>(e.what()));
return NULL;
}
PyEval_RestoreThread(_savePythonThreadState);
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment