Don't abort if sqlstate_errors or psycoEncodings are already initialized

This commit is contained in:
Sandro Mani 2021-05-03 15:14:07 +02:00 committed by Daniele Varrazzo
parent 263ace6657
commit 46dcadbe38
2 changed files with 7 additions and 3 deletions

1
NEWS
View File

@ -6,6 +6,7 @@ What's new in psycopg 2.8.7
- Accept empty params as `~psycopg2.connect()` (:ticket:`#1250`).
- Fix attributes refcount in `Column` initialisation (:ticket:`#1252`).
- Allow re-initialisation of static variables in the C module (:ticket:`#1267`).
What's new in psycopg 2.8.6

View File

@ -608,6 +608,10 @@ encodings_init(PyObject *module)
int rv = -1;
Dprintf("psycopgmodule: initializing encodings table");
if (psycoEncodings) {
Dprintf("encodings_init(): already called");
return 0;
}
if (!(psycoEncodings = PyDict_New())) { goto exit; }
Py_INCREF(psycoEncodings);
@ -770,9 +774,8 @@ sqlstate_errors_init(PyObject *module)
Dprintf("psycopgmodule: initializing sqlstate exceptions");
if (sqlstate_errors) {
PyErr_SetString(PyExc_SystemError,
"sqlstate_errors_init(): already called");
goto exit;
Dprintf("sqlstate_errors_init(): already called");
return 0;
}
if (!(errmodule = PyImport_ImportModule("psycopg2.errors"))) {
/* don't inject the exceptions into the errors module */