[tracker] libtracker-data: Protect stmt creation with the TrackerDBInterface mutex
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] libtracker-data: Protect stmt creation with the TrackerDBInterface mutex
- Date: Sun, 20 Nov 2016 16:07:57 +0000 (UTC)
commit 4c1efdaf2c662c26d3125a4dcd4621f515ac5a49
Author: Carlos Garnacho <carlosg gnome org>
Date: Sat Nov 5 21:21:23 2016 +0100
libtracker-data: Protect stmt creation with the TrackerDBInterface mutex
Creating the sqlite3_stmt counts as "accessing the database handle", so
make it sure they're also protected by the TrackerDBInterface mutex.
src/libtracker-data/tracker-db-interface-sqlite.c | 15 +++++++++++----
1 files changed, 11 insertions(+), 4 deletions(-)
---
diff --git a/src/libtracker-data/tracker-db-interface-sqlite.c
b/src/libtracker-data/tracker-db-interface-sqlite.c
index 2ceea27..e6eef85 100644
--- a/src/libtracker-data/tracker-db-interface-sqlite.c
+++ b/src/libtracker-data/tracker-db-interface-sqlite.c
@@ -2170,6 +2170,8 @@ tracker_db_interface_create_statement (TrackerDBInterface *db_interfac
full_query = g_strdup_vprintf (query, args);
va_end (args);
+ tracker_db_interface_lock (db_interface);
+
if (cache_type != TRACKER_DB_STATEMENT_CACHE_TYPE_NONE) {
stmt = tracker_db_interface_lru_lookup (db_interface, &cache_type,
full_query);
@@ -2199,6 +2201,8 @@ tracker_db_interface_create_statement (TrackerDBInterface *db_interfac
g_free (full_query);
+ tracker_db_interface_unlock (db_interface);
+
return g_object_ref_sink (stmt);
}
@@ -2300,16 +2304,19 @@ tracker_db_interface_execute_vquery (TrackerDBInterface *db_interface,
sqlite3_stmt *stmt;
int retval;
+ tracker_db_interface_lock (db_interface);
+
full_query = g_strdup_vprintf (query, args);
stmt = tracker_db_interface_prepare_stmt (db_interface,
full_query,
error);
g_free (full_query);
- if (!stmt)
- return;
+ if (stmt) {
+ execute_stmt (db_interface, stmt, NULL, error);
+ sqlite3_finalize (stmt);
+ }
- execute_stmt (db_interface, stmt, NULL, error);
- sqlite3_finalize (stmt);
+ tracker_db_interface_unlock (db_interface);
}
TrackerDBInterface *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]