summaryrefslogtreecommitdiff
path: root/dev-python/psycopg/files/psycopg-2.4.2-begin-segfault.patch
blob: cbf2278d0bfa3fb4d299c50e280719034956d8be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
X-Git-Url: https://dndg.it/cgi-bin/gitweb.cgi?p=public%2Fpsycopg2.git;a=blobdiff_plain;f=psycopg%2Fpqpath.c;h=1f0d5da95bd88aa4d5468874047e4b0139ffadd3;hp=cee5ce4c9c053981710959ca28b7e68702c44a97;hb=de6f2ac387231fcd57c05031c82471ea57255e2b;hpb=d9fce1f837151e6eadfd8ca761ef328a721198bd

diff --git a/psycopg/pqpath.c b/psycopg/pqpath.c
index cee5ce4..1f0d5da 100644
--- a/psycopg/pqpath.c
+++ b/psycopg/pqpath.c
@@ -344,11 +344,13 @@ pq_execute_command_locked(connectionObject *conn, const char *query,
     }
     if (*pgres == NULL) {
         Dprintf("pq_execute_command_locked: PQexec returned NULL");
+        PyEval_RestoreThread(*tstate);
         if (!PyErr_Occurred()) {
             const char *msg;
             msg = PQerrorMessage(conn->pgconn);
             if (msg && *msg) { *error = strdup(msg); }
         }
+        *tstate = PyEval_SaveThread();
         goto cleanup;
     }
 
@@ -635,11 +637,13 @@ pq_get_guc_locked(
 
     if (*pgres == NULL) {
         Dprintf("pq_get_guc_locked: PQexec returned NULL");
+        PyEval_RestoreThread(*tstate);
         if (!PyErr_Occurred()) {
             const char *msg;
             msg = PQerrorMessage(conn->pgconn);
             if (msg && *msg) { *error = strdup(msg); }
         }
+        *tstate = PyEval_SaveThread();
         goto cleanup;
     }
     if (PQresultStatus(*pgres) != PGRES_TUPLES_OK) {