diff options
author | Jude Melton-Houghton <jwmhjwmh@gmail.com> | 2022-08-16 11:28:22 -0400 |
---|---|---|
committer | Loïc Blot <nerzhul@users.noreply.github.com> | 2022-09-18 17:39:09 +0200 |
commit | 006d974c584933dc4482c4a1b05f6bc0c249c8e0 (patch) | |
tree | a7fd26cbaf432b377098361d631d3642bb645f4b /src | |
parent | b89608c6240b8e271e4f62a865449c947105a327 (diff) | |
download | minetest-006d974c584933dc4482c4a1b05f6bc0c249c8e0.tar.xz |
Catch exceptions in SQLite3 callback
Diffstat (limited to 'src')
-rw-r--r-- | src/database/database-sqlite3.cpp | 8 |
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) { |