| From 0f0be88526ece7d2f6ee21c1f59b1546ec6dc7c0 Mon Sep 17 00:00:00 2001 |
| From: "Yann E. MORIN" <yann.morin.1998@free.fr> |
| Date: Tue, 7 Mar 2017 22:25:14 +0100 |
| Subject: [PATCH] sqlite3: fix build when threads are not used/available |
| |
| When threads are not used/available, a function in the sqlite3 extension |
| ends up with a label at the end: |
| |
| void _pysqlite_final_callback(sqlite3_context* context) |
| { |
| PyObject* function_result; |
| PyObject** aggregate_instance; |
| int ok; |
| |
| #ifdef WITH_THREAD |
| PyGILState_STATE threadstate; |
| |
| threadstate = PyGILState_Ensure(); |
| #endif |
| |
| aggregate_instance = (PyObject**)sqlite3_aggregate_context(context, sizeof(PyObject*)); |
| if (!*aggregate_instance) { |
| goto error; |
| } |
| |
| [......] |
| |
| error: |
| #ifdef WITH_THREAD |
| PyGILState_Release(threadstate); |
| #endif |
| } |
| |
| This is not valid, and gcc complains. |
| |
| Fix that by adding a dummy statement after the label, so that the label |
| is never the last statement of the function. |
| |
| Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> |
| --- |
| Modules/_sqlite/connection.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c |
| index 237d6e4..cdf69ab 100644 |
| --- a/Modules/_sqlite/connection.c |
| +++ b/Modules/_sqlite/connection.c |
| @@ -794,6 +794,7 @@ error: |
| #ifdef WITH_THREAD |
| PyGILState_Release(threadstate); |
| #endif |
| + ; /* Make gcc happy: a label can't be at the end of a function */ |
| } |
| |
| static void _pysqlite_drop_unused_statement_references(pysqlite_Connection* self) |
| -- |
| 2.7.4 |
| |