gnucash stable: Bug 799791 - Unvoid is not available (Bug from the mailing lists)

John Ralls jralls at code.gnucash.org
Sat Jul 18 13:27:18 EDT 2026


Updated	 via  https://github.com/Gnucash/gnucash/commit/6e33c238 (commit)
	from  https://github.com/Gnucash/gnucash/commit/828a80d0 (commit)



commit 6e33c23815eaadf6b11a9e1e03c53b74e8418a05
Author: John Ralls <jralls at ceridwen.us>
Date:   Sat Jul 18 10:25:17 2026 -0700

    Bug 799791 - Unvoid is not available (Bug from the mailing lists)
    
    Use the existence of void timestamp instead of void reason to
    determine if a transaction is voided. A user can void a transaction
    without providing a reason.

diff --git a/libgnucash/engine/Transaction.cpp b/libgnucash/engine/Transaction.cpp
index 67c1bbcf89..67e28e75cc 100644
--- a/libgnucash/engine/Transaction.cpp
+++ b/libgnucash/engine/Transaction.cpp
@@ -2546,8 +2546,8 @@ xaccTransVoid(Transaction *trans, const char *reason)
 gboolean
 xaccTransGetVoidStatus(const Transaction *trans)
 {
-    const char *s = xaccTransGetVoidReason (trans);
-    return (s && *s);
+    auto t = xaccTransGetVoidTime (trans);
+    return t != INT64_MAX;
 }
 
 const char *
@@ -2560,7 +2560,7 @@ time64
 xaccTransGetVoidTime(const Transaction *tr)
 {
     auto void_str{get_kvp_string_path (tr, {void_time_str})};
-    return void_str ? gnc_iso8601_to_time64_gmt (void_str) : 0;
+    return void_str ? gnc_iso8601_to_time64_gmt (void_str) : INT64_MAX;
 }
 
 void
@@ -2568,7 +2568,7 @@ xaccTransUnvoid (Transaction *trans)
 {
     g_return_if_fail(trans);
 
-    if (xaccTransGetVoidReason (trans) == nullptr)
+    if (!xaccTransGetVoidStatus (trans))
         return; /* Transaction isn't voided. Bail. */
 
     xaccTransBeginEdit(trans);
diff --git a/libgnucash/engine/test/test-transaction-voiding.cpp b/libgnucash/engine/test/test-transaction-voiding.cpp
index 7ae5264b5b..d8df70a375 100644
--- a/libgnucash/engine/test/test-transaction-voiding.cpp
+++ b/libgnucash/engine/test/test-transaction-voiding.cpp
@@ -146,7 +146,7 @@ run_test (void)
     time = xaccTransGetVoidTime (transaction);
 
     /* figure at most 2 seconds difference */
-    if ((time != 0))
+    if ((time != INT64_MAX))
     {
         failure("void time not zero after restore");
     }



Summary of changes:
 libgnucash/engine/Transaction.cpp                   | 8 ++++----
 libgnucash/engine/test/test-transaction-voiding.cpp | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)



More information about the gnucash-changes mailing list