[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#893439: stretch-pu: package gnucash/1:2.6.15-1+deb9u1



Package: release.debian.org
Severity: normal
Tags: stretch
User: release.debian.org@packages.debian.org
Usertags: pu

libdbi 0.9.0-4+deb9u1 broke gnucash tests, runtime issues
with this backend were so far not reported but are not unlikely.
diff -Nru gnucash-2.6.15/debian/changelog gnucash-2.6.15/debian/changelog
--- gnucash-2.6.15/debian/changelog	2016-12-21 23:24:13.000000000 +0200
+++ gnucash-2.6.15/debian/changelog	2018-03-18 21:22:16.000000000 +0200
@@ -1,3 +1,11 @@
+gnucash (1:2.6.15-1+deb9u1) stretch; urgency=medium
+
+  * Non-maintainer upload.
+  * Add upstream fix for building with libdbi 0.9.0-4+deb9u1,
+    thanks to Morham Malpense for the bug report. (Closes: #893077)
+
+ -- Adrian Bunk <bunk@debian.org>  Sun, 18 Mar 2018 21:22:16 +0200
+
 gnucash (1:2.6.15-1) unstable; urgency=medium
 
   * New upstream release [December 2016].
diff -Nru gnucash-2.6.15/debian/patches/789928u.patch gnucash-2.6.15/debian/patches/789928u.patch
--- gnucash-2.6.15/debian/patches/789928u.patch	1970-01-01 02:00:00.000000000 +0200
+++ gnucash-2.6.15/debian/patches/789928u.patch	2018-03-18 21:21:48.000000000 +0200
@@ -0,0 +1,75 @@
+Forwarded: not-needed
+Origin: upstream, https://github.com/Gnucash/gnucash/commit/45bab93613e6a93b206b74ffc18f63708b07293b.patch
+From 45bab93613e6a93b206b74ffc18f63708b07293b Mon Sep 17 00:00:00 2001
+From: John Ralls <jralls@ceridwen.us>
+Date: Tue, 7 Nov 2017 18:06:04 -0800
+Subject: Bug 789928 - FTBFS with libdbi 0.9.0-5 on Debian
+
+Commit 88b8477 on libdbi calls the error handler if one attempts to run
+off the end of a result set. Since we often loop on
+dbi_result_next_row() returning 0 this breaks our logic in several
+places. This change simply returns from the error handler on a
+DB_ERROR_BADIDX allowing the logic to work as before.
+
+--- a/src/backend/dbi/gnc-backend-dbi.c
++++ b/src/backend/dbi/gnc-backend-dbi.c
+@@ -395,10 +395,15 @@
+ {
+     const gchar* msg;
+     GncDbiBackend *be = (GncDbiBackend*)user_data;
+     GncDbiSqlConnection *dbi_conn = (GncDbiSqlConnection*)(be->sql_be.conn);
+-
+-    (void)dbi_conn_error( conn, &msg );
++    int err_num = dbi_conn_error( conn, &msg );
++    /* BADIDX is raised if we attempt to seek outside of a result. We
++     * handle that possibility after checking the return value of the
++     * seek. Having this raise a critical error breaks looping by
++     * testing for the return value of the seek.
++     */
++    if (err_num == DBI_ERROR_BADIDX) return;
+     PERR( "DBI error: %s\n", msg );
+     gnc_dbi_set_error( dbi_conn, ERR_BACKEND_MISC, 0, FALSE );
+ }
+ 
+@@ -610,16 +615,20 @@
+ {
+     GncDbiBackend *be = (GncDbiBackend*)user_data;
+     GncDbiSqlConnection *dbi_conn = (GncDbiSqlConnection*)be->sql_be.conn;
+     const gchar* msg;
+-    gint err_num;
+ #ifdef G_OS_WIN32
+     const guint backoff_msecs = 1;
+ #else
+     const guint backoff_usecs = 1000;
+ #endif
+-
+-    err_num = dbi_conn_error( conn, &msg );
++    int err_num = dbi_conn_error( conn, &msg );
++    /* BADIDX is raised if we attempt to seek outside of a result. We
++     * handle that possibility after checking the return value of the
++     * seek. Having this raise a critical error breaks looping by
++     * testing for the return value of the seek.
++     */
++    if (err_num == DBI_ERROR_BADIDX) return;
+ 
+     /* Note: the sql connection may not have been initialized yet
+      *       so let's be careful with using it
+      */
+@@ -1330,10 +1339,16 @@
+     const guint backoff_msecs = 1;
+ #else
+     const guint backoff_usecs = 1000;
+ #endif
++    int err_num = dbi_conn_error( conn, &msg );
++    /* BADIDX is raised if we attempt to seek outside of a result. We
++     * handle that possibility after checking the return value of the
++     * seek. Having this raise a critical error breaks looping by
++     * testing for the return value of the seek.
++     */
++    if (err_num == DBI_ERROR_BADIDX) return;
+ 
+-    (void)dbi_conn_error( conn, &msg );
+     if ( g_str_has_prefix( msg, "FATAL:  database" ) &&
+             g_str_has_suffix( msg, "does not exist\n" ) )
+     {
+         PINFO( "DBI error: %s\n", msg );
diff -Nru gnucash-2.6.15/debian/patches/series gnucash-2.6.15/debian/patches/series
--- gnucash-2.6.15/debian/patches/series	2016-12-21 23:24:13.000000000 +0200
+++ gnucash-2.6.15/debian/patches/series	2018-03-18 21:22:16.000000000 +0200
@@ -1 +1,2 @@
+789928u.patch
 hardening-fortify.patch

Reply to: