diff --git a/NEWS b/NEWS index 35044bcd..bdd30df8 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,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 diff --git a/psycopg/psycopgmodule.c b/psycopg/psycopgmodule.c index 36fd1f9c..d448d010 100644 --- a/psycopg/psycopgmodule.c +++ b/psycopg/psycopgmodule.c @@ -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 */