From 8c21aff5e1dc878f62ef42794524ba17c5601626 Mon Sep 17 00:00:00 2001 From: Mike Alexander Date: Fri, 2 May 2014 18:02:08 -0400 Subject: [PATCH 1/2] Better test for conflict between optimization and FORTIFY_SOURCE --- configure.ac | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/configure.ac b/configure.ac index 48f3ecd38d..db405826c4 100644 --- a/configure.ac +++ b/configure.ac @@ -1316,22 +1316,21 @@ then # This is gcc >= 3.4.x warnFLAGS="${warnFLAGS} -Wdeclaration-after-statement" fi - else if test "`echo ${GCC_VERSION} | cut -d. -f1`" -ge 4; then + elif test "`echo ${GCC_VERSION} | cut -d. -f1`" -ge 4; then + AC_MSG_CHECKING(OK To use fortify source?) # This is gcc >= 4.x.x warnFLAGS="${warnFLAGS} -Wdeclaration-after-statement -Wno-pointer-sign" # rpmbuild on FC4 forces this flag. Only add it when optimizing - have_optimization= - for flag in $CFLAGS; do - tmp_flag=`echo $flag | sed -e 's,-O.,,'` - if `echo $flag | grep -q -- '-O'` ; then - have_optimization=yes - fi - done - - if test "x${have_optimization}" = xyes; then - warnFLAGS="${warnFLAGS} -D_FORTIFY_SOURCE=2" - fi - fi + cflags_save="$CFLAGS" + CFLAGS="$AM_CFLAGS $CFLAGS -Werror -D_FORTIFY_SOURCE=2" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include + ]], + [[ printf( "%s\n", "Hello World!");]])], + [warnFLAGS="${warnFLAGS} -D_FORTIFY_SOURCE=2" + AC_MSG_RESULT(OK)], + [AC_MSG_RESULT(No)]) + CFLAGS="$cflags_save" fi CFLAGS="${warnFLAGS} ${CFLAGS}" else From 6695f6c6608869a2d4d62e94f060bf77b618d60c Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Mon, 5 May 2014 17:53:21 +0200 Subject: [PATCH 2/2] Fix crash with libdib >= 0.9.0 Based on a patch provided by Colin Law --- src/backend/dbi/gnc-backend-dbi.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/backend/dbi/gnc-backend-dbi.c b/src/backend/dbi/gnc-backend-dbi.c index 694cbba083..e5e263aba6 100644 --- a/src/backend/dbi/gnc-backend-dbi.c +++ b/src/backend/dbi/gnc-backend-dbi.c @@ -292,7 +292,7 @@ gnc_dbi_sqlite3_session_begin( QofBackend *qbe, QofSession *session, } #if HAVE_LIBDBI_R - be->conn = dbi_conn_new_r( "sqlite3", dbi_instance ); + be->conn = dbi_conn_new_r( "sqlite3", &dbi_instance ); #else be->conn = dbi_conn_new( "sqlite3" ); #endif @@ -822,7 +822,7 @@ gnc_dbi_mysql_session_begin( QofBackend* qbe, QofSession *session, dbi_conn_close( be->conn ); } #if HAVE_LIBDBI_R - be->conn = dbi_conn_new_r( "mysql", dbi_instance ); + be->conn = dbi_conn_new_r( "mysql", &dbi_instance ); #else be->conn = dbi_conn_new( "mysql" ); #endif @@ -911,7 +911,7 @@ gnc_dbi_mysql_session_begin( QofBackend* qbe, QofSession *session, // Try again to connect to the db #if HAVE_LIBDBI_R - be->conn = dbi_conn_new_r( "mysql", dbi_instance ); + be->conn = dbi_conn_new_r( "mysql", &dbi_instance ); #else be->conn = dbi_conn_new( "mysql" ); #endif @@ -1168,7 +1168,7 @@ gnc_dbi_postgres_session_begin( QofBackend *qbe, QofSession *session, } #if HAVE_LIBDBI_R - be->conn = dbi_conn_new_r( "pgsql", dbi_instance ); + be->conn = dbi_conn_new_r( "pgsql", &dbi_instance ); #else be->conn = dbi_conn_new( "pgsql" ); #endif @@ -1259,7 +1259,7 @@ gnc_dbi_postgres_session_begin( QofBackend *qbe, QofSession *session, // Try again to connect to the db #if HAVE_LIBDBI_R - be->conn = dbi_conn_new_r( "pgsql", dbi_instance ); + be->conn = dbi_conn_new_r( "pgsql", &dbi_instance ); #else be->conn = dbi_conn_new( "pgsql" ); #endif @@ -1869,7 +1869,7 @@ gnc_module_init_backend_dbi(void) /* dbi_initialize returns -1 in case of errors */ #if HAVE_LIBDBI_R - num_drivers = dbi_initialize_r( driver_dir, dbi_instance ); + num_drivers = dbi_initialize_r( driver_dir, &dbi_instance ); #else num_drivers = dbi_initialize( driver_dir ); #endif @@ -1885,7 +1885,7 @@ gnc_module_init_backend_dbi(void) do { #if HAVE_LIBDBI_R - driver = dbi_driver_list_r( driver, dbi_instance ); + driver = dbi_driver_list_r( driver, &dbi_instance ); #else driver = dbi_driver_list( driver ); #endif @@ -1988,7 +1988,7 @@ void gnc_module_finalize_backend_dbi( void ) { #if HAVE_LIBDBI_R - dbi_shutdown_r(dbi_instance); + dbi_shutdown_r(&dbi_instance); #else dbi_shutdown(); #endif