[tracker/sam/fix-load: 30/31] libtracker-data: Fix crash when statement cache isn't initialized



commit e6bce71373afd6c68d12984acc4807987b173155
Author: Sam Thursfield <sam afuera me uk>
Date:   Sun Mar 8 16:21:46 2020 +0100

    libtracker-data: Fix crash when statement cache isn't initialized
    
    This was causing LOAD updates to fail.

 src/libtracker-data/tracker-db-interface-sqlite.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
---
diff --git a/src/libtracker-data/tracker-db-interface-sqlite.c 
b/src/libtracker-data/tracker-db-interface-sqlite.c
index b57c3a8b3..fb5bcb46d 100644
--- a/src/libtracker-data/tracker-db-interface-sqlite.c
+++ b/src/libtracker-data/tracker-db-interface-sqlite.c
@@ -2608,7 +2608,10 @@ tracker_db_interface_lru_insert_unchecked (TrackerDBInterface          *db_inter
         *    `- [n-p] <- [n-p] <--------'    *
         *                                    */
 
-       if (stmt_lru->size >= stmt_lru->max) {
+       if (stmt_lru->size == 0) {
+               stmt_lru->head = stmt;
+               stmt_lru->tail = stmt;
+       } else if (stmt_lru->size >= stmt_lru->max) {
                TrackerDBStatement *new_head;
 
                /* We reached max-size of the LRU stmt cache. Destroy current
@@ -2621,11 +2624,6 @@ tracker_db_interface_lru_insert_unchecked (TrackerDBInterface          *db_inter
                                     (gpointer) sqlite3_sql (stmt_lru->head->stmt));
                stmt_lru->size--;
                stmt_lru->head = new_head;
-       } else {
-               if (stmt_lru->size == 0) {
-                       stmt_lru->head = stmt;
-                       stmt_lru->tail = stmt;
-               }
        }
 
        /* Set the current stmt (which is always new here) as the new tail


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]