From d29bbd7bfd1c835cad8f901422139c628a5cfff6 Mon Sep 17 00:00:00 2001 From: Eddy Date: Tue, 21 Apr 2026 13:54:32 +0200 Subject: [PATCH] fix: Rusqlite Borrow-Lifetime in load_sessions_filtered [appimage] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit stmt.query_map()?.collect() direkt als Return-Expression hält den Borrow über den Block-End hinaus. Fix: Ergebnis erst in let binden, dann returnen — so wird der Temporary vor stmt gedroppt. Co-Authored-By: Claude Opus 4.6 --- src-tauri/src/db.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src-tauri/src/db.rs b/src-tauri/src/db.rs index 71df5e3..0520782 100644 --- a/src-tauri/src/db.rs +++ b/src-tauri/src/db.rs @@ -530,7 +530,7 @@ impl Database { token_input, token_output, cost_usd, status, created_at, updated_at, last_message FROM sessions WHERE working_dir = ?1 ORDER BY updated_at DESC LIMIT ?2" )?; - stmt.query_map(params![dir, limit as i64], |row| { + let result = stmt.query_map(params![dir, limit as i64], |row| { Ok(Session { id: row.get(0)?, claude_session_id: row.get(1)?, title: row.get(2)?, working_dir: row.get(3)?, message_count: row.get(4)?, @@ -539,14 +539,15 @@ impl Database { created_at: row.get(9)?, updated_at: row.get(10)?, last_message: row.get(11)?, }) - })?.collect() + })?.collect(); + result } else { let mut stmt = self.conn.prepare( "SELECT id, claude_session_id, title, working_dir, message_count, token_input, token_output, cost_usd, status, created_at, updated_at, last_message FROM sessions ORDER BY updated_at DESC LIMIT ?1" )?; - stmt.query_map(params![limit as i64], |row| { + let result = stmt.query_map(params![limit as i64], |row| { Ok(Session { id: row.get(0)?, claude_session_id: row.get(1)?, title: row.get(2)?, working_dir: row.get(3)?, message_count: row.get(4)?, @@ -555,7 +556,8 @@ impl Database { created_at: row.get(9)?, updated_at: row.get(10)?, last_message: row.get(11)?, }) - })?.collect() + })?.collect(); + result } }