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