From 20f8fe59a4c77322a479b0d6c2d5258c04bbd4c0 Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Fri, 27 Oct 2017 15:52:44 +0200 Subject: [PATCH] fix crash in soci in Android and iOS --- cmake/FindSoci.cmake | 4 ++++ src/db/abstract/abstract-db.cpp | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/cmake/FindSoci.cmake b/cmake/FindSoci.cmake index 91c4e376d..e930f93a9 100644 --- a/cmake/FindSoci.cmake +++ b/cmake/FindSoci.cmake @@ -61,6 +61,10 @@ IF(SOCI_INCLUDE_DIRS AND SOCI_LIBRARIES) IF(SOCI_${plugin}_PLUGIN) MESSAGE(STATUS " * Plugin ${plugin} found ${SOCI_${plugin}_PLUGIN}.") SET(SOCI_${plugin}_FOUND True) + + if(IOS OR ANDROID) + list(APPEND SOCI_LIBRARIES ${SOCI_${plugin}_PLUGIN}) + endif() ELSE() MESSAGE(STATUS " * Plugin ${plugin} not found.") SET(SOCI_${plugin}_FOUND False) diff --git a/src/db/abstract/abstract-db.cpp b/src/db/abstract/abstract-db.cpp index a3cb11e0a..4c101eb06 100644 --- a/src/db/abstract/abstract-db.cpp +++ b/src/db/abstract/abstract-db.cpp @@ -33,9 +33,14 @@ LINPHONE_BEGIN_NAMESPACE AbstractDb::AbstractDb (AbstractDbPrivate &p) : Object(p) {} +extern "C" void register_factory_sqlite3(); + bool AbstractDb::connect (Backend backend, const string ¶meters) { L_D(); - +#if defined(__APPLE__) || defined(__ANDROID__) + if (backend == Sqlite3) + register_factory_sqlite3(); +#endif // defined(__APPLE__) || defined(__ANDROID__)*/ d->backend = backend; d->dbSession = DbSessionProvider::getInstance()->getSession( (backend == Mysql ? "mysql://" : "sqlite3://") + parameters