Issue #18488: Fix _pysqlite_final_callback()

Restore behaviour of Python 3.3: print the finalizer() error if
sqlite3.enable_callback_tracebacks() has been called, clear the error
otherwise.

But keep (save/restore) also the AttributeError raised in
_pysqlite_step_callback().
This commit is contained in:
Victor Stinner 2013-07-22 08:34:32 +02:00
parent db53ad7cf1
commit 3a8573230c
1 changed files with 4 additions and 4 deletions

View File

@ -718,10 +718,6 @@ void _pysqlite_final_callback(sqlite3_context* context)
function_result = _PyObject_CallMethodId(*aggregate_instance, &PyId_finalize, "");
/* Restore the exception (if any) of the last call to step(),
but clear also the current exception if finalize() failed */
PyErr_Restore(exception, value, tb);
Py_DECREF(*aggregate_instance);
ok = 0;
@ -738,6 +734,10 @@ void _pysqlite_final_callback(sqlite3_context* context)
_sqlite3_result_error(context, "user-defined aggregate's 'finalize' method raised error", -1);
}
/* Restore the exception (if any) of the last call to step(),
but clear also the current exception if finalize() failed */
PyErr_Restore(exception, value, tb);
error:
#ifdef WITH_THREAD
PyGILState_Release(threadstate);