mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Bug 728717 - Ubuntu 14.04 - GNUcash crashes on close
Root cause is initializing twice with a static dbi_instance. Prevent that.
This commit is contained in:
parent
f8139efad1
commit
75114b7c62
@ -69,7 +69,7 @@
|
|||||||
|
|
||||||
#if LIBDBI_VERSION >= 900
|
#if LIBDBI_VERSION >= 900
|
||||||
#define HAVE_LIBDBI_R 1
|
#define HAVE_LIBDBI_R 1
|
||||||
static dbi_inst dbi_instance;
|
static dbi_inst dbi_instance = NULL;
|
||||||
#else
|
#else
|
||||||
#define HAVE_LIBDBI_R 0
|
#define HAVE_LIBDBI_R 0
|
||||||
#endif
|
#endif
|
||||||
@ -292,7 +292,10 @@ gnc_dbi_sqlite3_session_begin( QofBackend *qbe, QofSession *session,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if HAVE_LIBDBI_R
|
#if HAVE_LIBDBI_R
|
||||||
be->conn = dbi_conn_new_r( "sqlite3", dbi_instance );
|
if (dbi_instance)
|
||||||
|
be->conn = dbi_conn_new_r( "sqlite3", dbi_instance );
|
||||||
|
else
|
||||||
|
PERR ("Attempt to connect with an uninitialized dbi_instance");
|
||||||
#else
|
#else
|
||||||
be->conn = dbi_conn_new( "sqlite3" );
|
be->conn = dbi_conn_new( "sqlite3" );
|
||||||
#endif
|
#endif
|
||||||
@ -822,7 +825,10 @@ gnc_dbi_mysql_session_begin( QofBackend* qbe, QofSession *session,
|
|||||||
dbi_conn_close( be->conn );
|
dbi_conn_close( be->conn );
|
||||||
}
|
}
|
||||||
#if HAVE_LIBDBI_R
|
#if HAVE_LIBDBI_R
|
||||||
be->conn = dbi_conn_new_r( "mysql", dbi_instance );
|
if (dbi_instance)
|
||||||
|
be->conn = dbi_conn_new_r( "mysql", dbi_instance );
|
||||||
|
else
|
||||||
|
PERR ("Attempt to connect with an uninitialized dbi_instance");
|
||||||
#else
|
#else
|
||||||
be->conn = dbi_conn_new( "mysql" );
|
be->conn = dbi_conn_new( "mysql" );
|
||||||
#endif
|
#endif
|
||||||
@ -911,7 +917,10 @@ gnc_dbi_mysql_session_begin( QofBackend* qbe, QofSession *session,
|
|||||||
|
|
||||||
// Try again to connect to the db
|
// Try again to connect to the db
|
||||||
#if HAVE_LIBDBI_R
|
#if HAVE_LIBDBI_R
|
||||||
be->conn = dbi_conn_new_r( "mysql", dbi_instance );
|
if (dbi_instance)
|
||||||
|
be->conn = dbi_conn_new_r( "mysql", dbi_instance );
|
||||||
|
else
|
||||||
|
PERR ("Attempt to connect with an uninitialized dbi_instance");
|
||||||
#else
|
#else
|
||||||
be->conn = dbi_conn_new( "mysql" );
|
be->conn = dbi_conn_new( "mysql" );
|
||||||
#endif
|
#endif
|
||||||
@ -1168,7 +1177,10 @@ gnc_dbi_postgres_session_begin( QofBackend *qbe, QofSession *session,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if HAVE_LIBDBI_R
|
#if HAVE_LIBDBI_R
|
||||||
be->conn = dbi_conn_new_r( "pgsql", dbi_instance );
|
if (dbi_instance)
|
||||||
|
be->conn = dbi_conn_new_r( "pgsql", dbi_instance );
|
||||||
|
else
|
||||||
|
PERR ("Attempt to connect with an uninitialized dbi_instance");
|
||||||
#else
|
#else
|
||||||
be->conn = dbi_conn_new( "pgsql" );
|
be->conn = dbi_conn_new( "pgsql" );
|
||||||
#endif
|
#endif
|
||||||
@ -1259,7 +1271,10 @@ gnc_dbi_postgres_session_begin( QofBackend *qbe, QofSession *session,
|
|||||||
|
|
||||||
// Try again to connect to the db
|
// Try again to connect to the db
|
||||||
#if HAVE_LIBDBI_R
|
#if HAVE_LIBDBI_R
|
||||||
be->conn = dbi_conn_new_r( "pgsql", dbi_instance );
|
if (dbi_instance)
|
||||||
|
be->conn = dbi_conn_new_r( "pgsql", dbi_instance );
|
||||||
|
else
|
||||||
|
PERR ("Attempt to connect with an uninitialized dbi_instance");
|
||||||
#else
|
#else
|
||||||
be->conn = dbi_conn_new( "pgsql" );
|
be->conn = dbi_conn_new( "pgsql" );
|
||||||
#endif
|
#endif
|
||||||
@ -1869,6 +1884,8 @@ gnc_module_init_backend_dbi(void)
|
|||||||
|
|
||||||
/* dbi_initialize returns -1 in case of errors */
|
/* dbi_initialize returns -1 in case of errors */
|
||||||
#if HAVE_LIBDBI_R
|
#if HAVE_LIBDBI_R
|
||||||
|
if (dbi_instance)
|
||||||
|
return;
|
||||||
num_drivers = dbi_initialize_r( driver_dir, &dbi_instance );
|
num_drivers = dbi_initialize_r( driver_dir, &dbi_instance );
|
||||||
#else
|
#else
|
||||||
num_drivers = dbi_initialize( driver_dir );
|
num_drivers = dbi_initialize( driver_dir );
|
||||||
@ -1987,11 +2004,15 @@ qof_backend_module_finalize( void )
|
|||||||
void
|
void
|
||||||
gnc_module_finalize_backend_dbi( void )
|
gnc_module_finalize_backend_dbi( void )
|
||||||
{
|
{
|
||||||
#if HAVE_LIBDBI_R
|
#if HAVE_LIBDBI_R
|
||||||
dbi_shutdown_r(dbi_instance);
|
if (dbi_instance)
|
||||||
#else
|
{
|
||||||
|
dbi_shutdown_r(dbi_instance);
|
||||||
|
dbi_instance = NULL;
|
||||||
|
}
|
||||||
|
#else
|
||||||
dbi_shutdown();
|
dbi_shutdown();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------- */
|
/* --------------------------------------------------------- */
|
||||||
|
Loading…
Reference in New Issue
Block a user