From 006d974c584933dc4482c4a1b05f6bc0c249c8e0 Mon Sep 17 00:00:00 2001 From: Jude Melton-Houghton Date: Tue, 16 Aug 2022 11:28:22 -0400 Subject: [PATCH] Catch exceptions in SQLite3 callback --- src/database/database-sqlite3.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/database/database-sqlite3.cpp b/src/database/database-sqlite3.cpp index 9521085e9..5e565be55 100644 --- a/src/database/database-sqlite3.cpp +++ b/src/database/database-sqlite3.cpp @@ -857,8 +857,12 @@ void ModMetadataDatabaseSQLite3::listMods(std::vector *res) char *errmsg; int status = sqlite3_exec(m_database, "SELECT `modname` FROM `entries` GROUP BY `modname`;", - [](void *res_vp, int n_col, char **cols, char **col_names) -> int { - ((decltype(res)) res_vp)->emplace_back(cols[0]); + [](void *res_vp, int n_col, char **cols, char **col_names) noexcept -> int { + try { + ((decltype(res)) res_vp)->emplace_back(cols[0]); + } catch (...) { + return 1; + } return 0; }, (void *) res, &errmsg); if (status != SQLITE_OK) {