From c02152b34ac5aa3cd2e67d200ac11eae53184444 Mon Sep 17 00:00:00 2001 From: Christopher Lam Date: Sun, 27 Oct 2024 15:16:48 +0800 Subject: [PATCH] [Account.hpp] xaccAccountGetSplits returns a reference to vector --- libgnucash/engine/Account.cpp | 5 +++-- libgnucash/engine/Account.hpp | 2 +- libgnucash/engine/mocks/gmock-Account.cpp | 5 +++-- libgnucash/engine/mocks/gmock-Account.h | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/libgnucash/engine/Account.cpp b/libgnucash/engine/Account.cpp index d3f547359d..afcb769799 100644 --- a/libgnucash/engine/Account.cpp +++ b/libgnucash/engine/Account.cpp @@ -3881,10 +3881,11 @@ xaccAccountGetNoclosingBalanceChangeInCurrencyForPeriod (Account *acc, time64 t1 /********************************************************************\ \********************************************************************/ -const SplitsVec +const SplitsVec& xaccAccountGetSplits (const Account *account) { - g_return_val_if_fail (GNC_IS_ACCOUNT(account), SplitsVec{}); + static const SplitsVec empty; + g_return_val_if_fail (GNC_IS_ACCOUNT(account), empty); return GET_PRIVATE(account)->splits; } diff --git a/libgnucash/engine/Account.hpp b/libgnucash/engine/Account.hpp index 3a3c51addf..89649acfc4 100644 --- a/libgnucash/engine/Account.hpp +++ b/libgnucash/engine/Account.hpp @@ -40,7 +40,7 @@ using SplitsVec = std::vector; using AccountVec = std::vector; -const SplitsVec xaccAccountGetSplits (const Account*); +const SplitsVec& xaccAccountGetSplits (const Account*); void gnc_account_foreach_descendant (const Account *, std::function func); diff --git a/libgnucash/engine/mocks/gmock-Account.cpp b/libgnucash/engine/mocks/gmock-Account.cpp index 3250a2c1b4..c59e82b3c5 100644 --- a/libgnucash/engine/mocks/gmock-Account.cpp +++ b/libgnucash/engine/mocks/gmock-Account.cpp @@ -76,13 +76,14 @@ xaccAccountGetSplitList (const Account *account) return mockaccount ? mockaccount->xaccAccountGetSplitList() : nullptr; } -const std::vector +const std::vector& xaccAccountGetSplits (const Account *account) { SCOPED_TRACE(""); auto mockaccount = gnc_mockaccount(account); + static const SplitsVec empty; if (!mockaccount) - return {}; + return empty; return mockaccount->xaccAccountGetSplits(); } diff --git a/libgnucash/engine/mocks/gmock-Account.h b/libgnucash/engine/mocks/gmock-Account.h index 97860fdc5e..a5cc8f006c 100644 --- a/libgnucash/engine/mocks/gmock-Account.h +++ b/libgnucash/engine/mocks/gmock-Account.h @@ -46,7 +46,7 @@ public: MOCK_CONST_METHOD0(get_commodity, gnc_commodity*()); MOCK_CONST_METHOD2(for_each_transaction, gint(TransactionCallback, void*)); MOCK_CONST_METHOD0(xaccAccountGetSplitList, SplitList*()); - MOCK_CONST_METHOD0(xaccAccountGetSplits, std::vector()); + MOCK_CONST_METHOD0(xaccAccountGetSplits, std::vector&()); MOCK_METHOD2(find_account, Account *(const char*, const char*)); MOCK_METHOD3(add_account, void(const char*, const char*, Account*)); MOCK_METHOD1(find_account_bayes, Account *(std::vector&));