aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJude Melton-Houghton <jwmhjwmh@gmail.com>2022-08-16 11:28:22 -0400
committerLoïc Blot <nerzhul@users.noreply.github.com>2022-09-18 17:39:09 +0200
commit006d974c584933dc4482c4a1b05f6bc0c249c8e0 (patch)
treea7fd26cbaf432b377098361d631d3642bb645f4b /src
parentb89608c6240b8e271e4f62a865449c947105a327 (diff)
downloadminetest-006d974c584933dc4482c4a1b05f6bc0c249c8e0.tar.xz
Catch exceptions in SQLite3 callback
Diffstat (limited to 'src')
-rw-r--r--src/database/database-sqlite3.cpp8
1 files 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<std::string> *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) {