From 0f0be88526ece7d2f6ee21c1f59b1546ec6dc7c0 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" 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" --- 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