@@ -8,7 +8,7 @@ import os
88import SQLite3
99
1010/// Thread-safe SQLite storage for SQL favorites with FTS5 full-text search
11- final class SQLFavoriteStorage {
11+ internal final class SQLFavoriteStorage {
1212 static let shared = SQLFavoriteStorage ( )
1313 private static let logger = Logger ( subsystem: " com.TablePro " , category: " SQLFavoriteStorage " )
1414
@@ -564,9 +564,17 @@ final class SQLFavoriteStorage {
564564 sqlite3_bind_null ( moveFavStatement, 1 )
565565 }
566566 sqlite3_bind_text ( moveFavStatement, 2 , idString, - 1 , SQLITE_TRANSIENT)
567- sqlite3_step ( moveFavStatement)
567+ let moveFavResult = sqlite3_step ( moveFavStatement)
568+ sqlite3_finalize ( moveFavStatement)
569+ if moveFavResult != SQLITE_DONE {
570+ if inTransaction { sqlite3_exec ( self . db, " ROLLBACK; " , nil , nil , nil ) }
571+ return false
572+ }
573+ } else {
574+ sqlite3_finalize ( moveFavStatement)
575+ if inTransaction { sqlite3_exec ( self . db, " ROLLBACK; " , nil , nil , nil ) }
576+ return false
568577 }
569- sqlite3_finalize ( moveFavStatement)
570578
571579 // Move child subfolders to the parent folder
572580 let moveSubfoldersSQL = " UPDATE folders SET parent_id = ? WHERE parent_id = ?; "
@@ -578,9 +586,17 @@ final class SQLFavoriteStorage {
578586 sqlite3_bind_null ( moveSubStatement, 1 )
579587 }
580588 sqlite3_bind_text ( moveSubStatement, 2 , idString, - 1 , SQLITE_TRANSIENT)
581- sqlite3_step ( moveSubStatement)
589+ let moveSubResult = sqlite3_step ( moveSubStatement)
590+ sqlite3_finalize ( moveSubStatement)
591+ if moveSubResult != SQLITE_DONE {
592+ if inTransaction { sqlite3_exec ( self . db, " ROLLBACK; " , nil , nil , nil ) }
593+ return false
594+ }
595+ } else {
596+ sqlite3_finalize ( moveSubStatement)
597+ if inTransaction { sqlite3_exec ( self . db, " ROLLBACK; " , nil , nil , nil ) }
598+ return false
582599 }
583- sqlite3_finalize ( moveSubStatement)
584600
585601 // Delete the folder
586602 let deleteSQL = " DELETE FROM folders WHERE id = ?; "
0 commit comments