From: Timo Sirainen Date: Wed, 2 Sep 2015 14:19:08 +0000 (+0300) Subject: lib-sql: Debugging help - Added assert before clearing sql_result.callback. X-Git-Tag: 2.2.19.rc1~137 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1856c361aad526948d56d8aafd576bca94516b92;p=thirdparty%2Fdovecot%2Fcore.git lib-sql: Debugging help - Added assert before clearing sql_result.callback. If result is unrefed too many times, this still allows accessing the callback from a debugger. --- diff --git a/src/lib-sql/driver-cassandra.c b/src/lib-sql/driver-cassandra.c index 78f7036f0d..20fce28f03 100644 --- a/src/lib-sql/driver-cassandra.c +++ b/src/lib-sql/driver-cassandra.c @@ -470,12 +470,13 @@ static void result_finish(struct cassandra_result *result) result->callback(&result->api, result->context); } T_END; result->api.callback = FALSE; - result->callback = NULL; free_result = db->sync_result != &result->api; if (db->ioloop != NULL) io_loop_stop(db->ioloop); + i_assert(!free_result || result->api.refcount > 0); + result->callback = NULL; if (free_result) sql_result_unref(&result->api); } diff --git a/src/lib-sql/driver-pgsql.c b/src/lib-sql/driver-pgsql.c index 6044bdba28..bbe066459e 100644 --- a/src/lib-sql/driver-pgsql.c +++ b/src/lib-sql/driver-pgsql.c @@ -387,12 +387,13 @@ static void result_finish(struct pgsql_result *result) result->callback(&result->api, result->context); } T_END; result->api.callback = FALSE; - result->callback = NULL; free_result = db->sync_result != &result->api; if (db->ioloop != NULL) io_loop_stop(db->ioloop); + i_assert(!free_result || result->api.refcount > 0); + result->callback = NULL; if (free_result) sql_result_unref(&result->api); }