From 1856c361aad526948d56d8aafd576bca94516b92 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Wed, 2 Sep 2015 17:19:08 +0300 Subject: [PATCH] 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. --- src/lib-sql/driver-cassandra.c | 3 ++- src/lib-sql/driver-pgsql.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) 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); } -- 2.47.3