Commit Graph

1209 Commits

Author SHA1 Message Date
Simon Arlott
069eb61a3f
Avoid the potential negative left shift in test_xaccAccountType_Compatibility()
ACCT_TYPE_NONE is -1 but it should always be masked out by compat;
explicitly check for this instead of relying on that.

Add parenthesis to be clear that the default precedence is what's intended.
2023-06-24 20:30:48 +01:00
John Ralls
e98d3534ce Bug 798901 - Wrong value for very small prices from Finance::Quote.
Implement parsing number strings in scientific notation, avoiding
interpreting hexadecimal integers that way, "e" being a hex digit.
2023-06-23 14:39:37 -07:00
John Ralls
4c67cc09a6 Merge Richard Cohen's 'valgrind-test-fixes' into stable. 2023-06-22 13:24:56 -07:00
Richard Cohen
fa0824e903 Valgrind: fix "Invalid read" - test-vendor
==4031== Invalid read of size 8
==4031==    at 0x4E58C09: gncVendorGetAddr (gncVendor.c:677)
==4031==    by 0x10A7E3: test_vendor (test-vendor.c:97)
...
==4031==  Address 0x7e0c4e8 is 168 bytes inside a block of size 232 free'd
==4031==    at 0x484620F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==4031==    by 0x51526C3: g_type_free_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4031==    by 0x4E58616: gncVendorFree (gncVendor.c:511)
==4031==    by 0x4E58EFF: vendor_free (gncVendor.c:782)
==4031==    by 0x4E8611E: qof_commit_edit_part2 (qofinstance.cpp:1034)
==4031==    by 0x4E58F59: gncVendorCommitEdit (gncVendor.c:788)
==4031==    by 0x4E584EF: gncVendorDestroy (gncVendor.c:483)
==4031==    by 0x10A729: test_vendor (test-vendor.c:80)
...
==4031==  Block was alloc'd at
==4031==    at 0x4848A13: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==4031==    by 0x5033550: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
==4031==    by 0x5157CBC: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4031==    by 0x513F20F: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4031==    by 0x51407B7: g_object_new_with_properties (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4031==    by 0x5141560: g_object_new (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4031==    by 0x4E583CF: gncVendorCreate (gncVendor.c:459)
==4031==    by 0x10A6A5: test_vendor (test-vendor.c:74)
...
2023-06-21 10:36:35 +01:00
Richard Cohen
2168c6f301 Valgrind: fix "Invalid read" - test-employee
==4029== Invalid read of size 8
==4029==    at 0x4E41F15: gncEmployeeGetAddr (gncEmployee.c:642)
==4029==    by 0x10A8A5: test_employee (test-employee.c:97)
...
==4029==  Address 0x7e0c208 is 152 bytes inside a block of size 248 free'd
==4029==    at 0x484620F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==4029==    by 0x51526C3: g_type_free_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4029==    by 0x4E418D5: gncEmployeeFree (gncEmployee.c:477)
==4029==    by 0x4E42144: emp_free (gncEmployee.c:714)
==4029==    by 0x4E8611E: qof_commit_edit_part2 (qofinstance.cpp:1034)
==4029==    by 0x4E4219E: gncEmployeeCommitEdit (gncEmployee.c:721)
==4029==    by 0x4E41823: gncEmployeeDestroy (gncEmployee.c:459)
==4029==    by 0x10A77F: test_employee (test-employee.c:79)
...
==4029==  Block was alloc'd at
==4029==    at 0x4848A13: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==4029==    by 0x5033550: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
==4029==    by 0x5157CBC: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4029==    by 0x513F20F: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4029==    by 0x51407B7: g_object_new_with_properties (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4029==    by 0x5141560: g_object_new (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4029==    by 0x4E416DA: gncEmployeeCreate (gncEmployee.c:434)
==4029==    by 0x10A6FB: test_employee (test-employee.c:73)
...
2023-06-21 10:36:35 +01:00
Richard Cohen
a5513b45d5 Valgrind: fix "Invalid read" - test-customer
==4028== Invalid read of size 8
==4028==    at 0x4E3F641: gncCustomerGetAddr (gncCustomer.c:579)
==4028==    by 0x10A8EE: test_customer (test-customer.c:90)
...
==4028==  Address 0x7e861b8 is 168 bytes inside a block of size 272 free'd
==4028==    at 0x484620F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==4028==    by 0x51526C3: g_type_free_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4028==    by 0x4E3EDD6: gncCustomerFree (gncCustomer.c:368)
==4028==    by 0x4E3F57B: cust_free (gncCustomer.c:551)
==4028==    by 0x4E8611E: qof_commit_edit_part2 (qofinstance.cpp:1034)
==4028==    by 0x4E3F5D5: gncCustomerCommitEdit (gncCustomer.c:557)
==4028==    by 0x4E3EC89: gncCustomerDestroy (gncCustomer.c:338)
==4028==    by 0x10A7EC: test_customer (test-customer.c:71)
...
==4028==  Block was alloc'd at
==4028==    at 0x4848A13: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==4028==    by 0x5033550: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
==4028==    by 0x5157CBC: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4028==    by 0x513F20F: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4028==    by 0x51407B7: g_object_new_with_properties (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4028==    by 0x5141560: g_object_new (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4028==    by 0x4E3EB0D: gncCustomerCreate (gncCustomer.c:309)
==4028==    by 0x10A768: test_customer (test-customer.c:66)
...

==4028== Invalid read of size 8
==4028==    at 0x4E3F796: gncCustomerGetShipAddr (gncCustomer.c:633)
==4028==    by 0x10A91D: test_customer (test-customer.c:91)
...
==4028==  Address 0x7e86210 is 256 bytes inside a block of size 272 free'd
==4028==    at 0x484620F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==4028==    by 0x51526C3: g_type_free_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4028==    by 0x4E3EDD6: gncCustomerFree (gncCustomer.c:368)
==4028==    by 0x4E3F57B: cust_free (gncCustomer.c:551)
==4028==    by 0x4E8611E: qof_commit_edit_part2 (qofinstance.cpp:1034)
==4028==    by 0x4E3F5D5: gncCustomerCommitEdit (gncCustomer.c:557)
==4028==    by 0x4E3EC89: gncCustomerDestroy (gncCustomer.c:338)
==4028==    by 0x10A7EC: test_customer (test-customer.c:71)
...
==4028==  Block was alloc'd at
==4028==    at 0x4848A13: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==4028==    by 0x5033550: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
==4028==    by 0x5157CBC: g_type_create_instance (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4028==    by 0x513F20F: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4028==    by 0x51407B7: g_object_new_with_properties (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4028==    by 0x5141560: g_object_new (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7600.1)
==4028==    by 0x4E3EB0D: gncCustomerCreate (gncCustomer.c:309)
==4028==    by 0x10A768: test_customer (test-customer.c:66)
...
2023-06-21 10:36:35 +01:00
Richard Cohen
a1893ef51b Valgrind: fix "Invalid read" - test-kvp-value
==7520== Invalid read of size 8
==7520==    at 0x4E36DCC: guid_copy (guid.cpp:123)
==7520==    by 0x1E3E62: KvpValueImpl::duplicate(KvpValueImpl const&) (kvp-value.cpp:378)
==7520==    by 0x1E31CC: KvpValueImpl::KvpValueImpl(KvpValueImpl const&) (kvp-value.cpp:36)
==7520==    by 0x1FF6C3: KvpValueTest_Copy_Test::TestBody() (test-kvp-value.cpp:74)
...
==7520==  Address 0x7e10f48 is 8 bytes inside a block of size 16 free'd
==7520==    at 0x4846AFF: operator delete(void*, unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==7520==    by 0x4E36D98: guid_free (guid.cpp:115)
==7520==    by 0x1E3D04: void delete_visitor::operator()<_gncGuid*>(_gncGuid*&) (kvp-value.cpp:358)
...
==7520==  Block was alloc'd at
==7520==    at 0x4843FA3: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==7520==    by 0x4E36D5C: guid_malloc (guid.cpp:105)
==7520==    by 0x4E36DC3: guid_copy (guid.cpp:122)
==7520==    by 0x4E36EB0: guid_new (guid.cpp:153)
==7520==    by 0x1FF4DB: KvpValueTest_Copy_Test::TestBody() (test-kvp-value.cpp:68)
2023-06-21 10:36:35 +01:00
Richard Cohen
46e6477f88 Refactor: use common code to free the list of guids 2023-06-21 10:36:31 +01:00
Richard Cohen
f1a3f2a8c8 Valgrind: fix "Mismatched free/delete" - test-scm-query etc.
- test-scm-query
- test-print-queries
- test-scm-query-string

==14597== Mismatched free() / delete / delete []
==14597==    at 0x484620F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==14597==    by 0x118851: free_random_guids(_GList*) (test-engine-stuff.cpp:1505)
==14597==    by 0x118CF5: get_random_query (test-engine-stuff.cpp:1674)
...
==14597==  Address 0xa1366a0 is 0 bytes inside a block of size 16 alloc'd
==14597==    at 0x4843FA3: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==14597==    by 0x5342FA6: guid_malloc (guid.cpp:106)
==14597==    by 0x534300D: guid_copy (guid.cpp:123)
==14597==    by 0x534311F: guid_new (guid.cpp:154)
==14597==    by 0x115D1A: get_random_guid (test-engine-stuff.cpp:207)
==14597==    by 0x1187FA: get_random_guids(int) (test-engine-stuff.cpp:1494)
==14597==    by 0x118CC0: get_random_query (test-engine-stuff.cpp:1668)
...

==15045== Mismatched free() / delete / delete []
==15045==    at 0x484620F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==15045==    by 0x118E96: get_random_query (test-engine-stuff.cpp:1735)
...
==15045==  Address 0xa077d40 is 0 bytes inside a block of size 16 alloc'd
==15045==    at 0x4843FA3: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==15045==    by 0x5342FA6: guid_malloc (guid.cpp:106)
==15045==    by 0x534300D: guid_copy (guid.cpp:123)
==15045==    by 0x534311F: guid_new (guid.cpp:154)
==15045==    by 0x115D1A: get_random_guid (test-engine-stuff.cpp:207)
==15045==    by 0x118E65: get_random_query (test-engine-stuff.cpp:1730)
...
2023-06-21 10:36:25 +01:00
John Ralls
b041a76690 [c++options]Dirty and changed are different.
Report options need to be saved when they're different from the
defaults, book options need to be saved when their value changes
regardless of whether it's the default value. That's dirty. Implement
it.
2023-06-20 14:50:42 -07:00
Vincent Dawans
b514245c22 Bug 798952 - Unable to set day threshold or counters in properties
Make sure counter values are retrieved as int; allow counter back
to zero; fix voucher default value.
2023-06-19 19:23:04 -07:00
Richard Cohen
e5a26e3c77 Valgrind: fix "Mismatched free/delete" - test-query
==31803== Mismatched free() / delete / delete []
==31803==    at 0x484620F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==31803==    by 0x1198CB: make_trans_query (test-engine-stuff.cpp:2030)
==31803==    by 0x115898: test_trans_query(transaction_s*, void*) (test-query.cpp:40)
...
==31803==  Address 0x7fed160 is 0 bytes inside a block of size 16 alloc'd
==31803==    at 0x4843FA3: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==31803==    by 0x4E3706E: guid_malloc (guid.cpp:106)
==31803==    by 0x4E370D5: guid_copy (guid.cpp:123)
==31803==    by 0x4E371E7: guid_new (guid.cpp:154)
==31803==    by 0x115D64: get_random_guid (test-engine-stuff.cpp:207)
==31803==    by 0x11984C: make_trans_query (test-engine-stuff.cpp:2023)
...
2023-06-19 13:53:24 +01:00
Richard Cohen
4018ff1722 Valgrind: fix "Mismatched free/delete" - test-kvp-frames etc.
- test-kvp-frames
- test-xml-account
- test-xml-transaction
- test-account-object
- test-group-vs-book
- test-lots
- test-query
- test-import-pending-matches

==30223== Mismatched free() / delete / delete []
==30223==    at 0x4846AFF: operator delete(void*, unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==30223==    by 0x4E370AA: guid_free (guid.cpp:116)
...
==30223==  Address 0x7ea4390 is 0 bytes inside a block of size 16 alloc'd
==30223==    at 0x4843828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==30223==    by 0x5032948: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
==30223==    by 0x11603A: get_random_guid (test-engine-stuff.cpp:209)
...
2023-06-19 13:53:24 +01:00
John Ralls
241aa1d2eb Merge Richard Cohen's 'remove-unneeded-memcpy' into stable. 2023-06-17 17:58:53 -07:00
John Ralls
aae568eca6 Add comment explaining "option.template get_value<int>()". 2023-06-17 16:58:03 -07:00
John Ralls
4dc8a7ee0d Bug 798952 - Unable to set day threshold or counters in properties
Make counters explicitly integer type and adjust the kvp load and save functions
to recognize that and behave accordingly so that other range options like day
threshold aren't affected.
2023-06-17 16:49:52 -07:00
Richard Cohen
3abc9a5558 Refactor: Remove some unnecessary uses of memcpy
- Also, remove unnecessary "static" in gnucash-style.c

The second one in guid.cpp is UB:

libgnucash/engine/guid.cpp:137:5: warning: undefined behavior, source object type 'const gnc::GUID' is not TriviallyCopyable [bugprone-undefined-memory-manipulation]
        memcpy (&target, &source, sizeof (GncGUID));
        ^
2023-06-15 11:10:58 +01:00
Christopher Lam
4a60e01fcd bugfix xaccTransGetTxnType: avoid returning TXN_TYPE_LINK incorrectly
A TXN_TYPE_PAYMENT will have non-APAR splits; a TXN_TYPE_LINK will not
have non-APAR splits. This bug manifests as a regular TXN_TYPE_PAYMENT
transaction being later voided being incorrectly changed to
TXN_TYPE_LINK.
2023-06-14 18:29:00 +08:00
John Ralls
0d1ba1ebe7 Merge Richard Cohen's 'y2038-fixes' into stable. 2023-06-12 14:44:11 -07:00
Christopher Lam
8ec6a4cb12 [Scrub.c] 8628ca8715 rewritten to avoid QofQuery
because QofQuery will include the blank transaction which must not be
scrubbed.
2023-06-12 23:59:37 +08:00
Richard Cohen
7d26b8c05f Fail the test if still using 32bit time_t in 2038
gtest-gnc-option.cpp and gtest-gnc-optiondb.cpp need to call
time() for g_date_set_time_t()
2023-06-08 14:30:32 +01:00
Richard Cohen
d63248dad2 Update Y2038 comments 2023-06-08 14:30:28 +01:00
John Ralls
a5ff19b62a Merge Richard Cohen's 'fix-incorrect-logging-after-fallthrough' into stable. 2023-06-06 14:59:05 -07:00
Richard Cohen
6e5c525f77 Use gnc_time() instead of time() 2023-06-06 15:40:36 +01:00
Richard Cohen
fde90c4c99 Restore test-gnc-option
- removed in merge 3e5fcc8709

To get it to compile

- remove unused variables
- remove duplicate operator==(GncGUID)
2023-06-06 15:34:07 +01:00
Richard Cohen
a0fd9af394 Fix incorrect logging after switch fallthrough
oops
2023-06-06 15:16:39 +01:00
Christopher Lam
ccc75cfc88 Merge branch 'scrub-optimize' into stable 2023-06-04 07:58:31 +08:00
Christopher Lam
81902ba8bb [scrub.c] xaccTransScrubSplits calls Begin/Commit only if required 2023-06-02 18:01:08 +08:00
Christopher Lam
872e20c555 move xaccTransScrubSplits to Scrub.c
it's defined in Scrub.h anyway
2023-06-01 20:28:01 +08:00
Christopher Lam
9047156017 [Scrub.c] refactor xaccAccountTreeScrubOrphans 2023-05-31 19:34:28 +08:00
Christopher Lam
8628ca8715 [Scrub.c] refactor xaccAccountTreeScrubImbalance
The scrubbing routines are transaction oriented. Instead of
xaccAccountTreeScrubImbalance calling xaccAccountScrubImbalance for
each descendant, refactor so that the transaction list is generated
only once. The scrubbing is faster and progress bar is more accurate.
2023-05-31 09:26:58 +08:00
Christopher Lam
d214b2f05d Merge Vincent Dawans' branch 'bug798879' into stable #1617 2023-05-30 22:41:05 +08:00
Vincent Dawans
1c04e744d3 [trep-engine.scm] Rename "Totals" option to "Grand Total" 2023-05-29 20:01:11 -07:00
John Ralls
6111184c73 Ensure incorrectly coded counter KVP is read correctly.
Bug 798930 caused some counters to be saved as KVP double. If the
correct int64_t value isn't found when reading, or if a double is
encountered when loading the option dialog, get the double value
and cast it to int64_t.
2023-05-26 21:24:06 -04:00
John Ralls
7d5663899c Bug 798930 - invoices wont sequence to the next number
Because KVP can't magically cast between int64_t and double.
2023-05-26 20:41:13 -04:00
John Ralls
3d30e5978a Merge Richard Cohen's 'define-boxed' into stable. 2023-05-25 10:50:08 -04:00
Richard Cohen
ae9304efb0 Remove unused boxed type gnc_value_list 2023-05-25 14:42:28 +01:00
Richard Cohen
f9efbf86c6 Remove unused Qofbook::ab-templates property 2023-05-25 14:42:28 +01:00
Mike Alexander
6bdaa161eb Redo 71afa3e0 and 71afa3e0 so powten(max_leg_digits) is 1e18
This is what it was before 71afa3e0.  This is the largest power of
ten that fits in an int64.
2023-05-22 15:24:26 -04:00
Richard Cohen
eb2d5df778 Refactor: DEFINE_BOXED GncGUID 2023-05-21 15:20:18 +01:00
Richard Cohen
c514f61a7a Refactor: DEFINE_BOXED Time64 2023-05-21 15:20:18 +01:00
Richard Cohen
14f2efcfb7 Refactor: DEFINE_BOXED gnc_numeric 2023-05-21 15:20:18 +01:00
John Ralls
bba49a6d09 Fix test-gnc-euro failure.
Fixing the pow[] array required also adjusting the number of
denominator digits when converting doubles to gnc_numerics.
2023-05-19 20:14:58 -05:00
Mike Alexander
71afa3e0fc Make the GncNumeric string constructtor work for long decimal numbers.
It was failing to produce a correct representation for input with more than
14 digits after the decimal poin.  Fixes Bug 798916.  The bug was in
powten so this fix may corect other problems too.  For example conversion
of GncNumeric back to a string also failed in certain circumsances.
2023-05-18 17:42:44 -04:00
John Ralls
8ccc6da87e Merge Richard Cohen's 'fix-test-engine-crash' into stable. 2023-05-17 21:20:44 -05:00
John Ralls
26162da450 Merge Richard Cohen's 'cleanup-build' into stable. 2023-05-17 21:16:09 -05:00
Richard Cohen
81fba56bbb Initialise guids in test-engine-kvp-properties.c
Valgrind: Conditional jump or move depends on uninitialised value(s)
2023-05-15 20:03:23 +01:00
Richard Cohen
bed43c7f3b Fix potential crash in test-engine
==515314== Invalid read of size 1
==515314==    at 0x484AD67: __strcmp_sse42 (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515314==    by 0x171D36: do_test_list_handler (unittest-support.c:181)
==515314==    by 0x171DCE: test_list_handler (unittest-support.c:197)
==515314==    by 0x51BD4C1: g_logv (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
==515314==    by 0x51BD7A2: g_log (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
==515314==    by 0x4D5D0D9: xaccSplitEqualCheckBal (Split.c:753)
==515314==    by 0x4D5D841: xaccSplitEqual (Split.c:869)
==515314==    by 0x4D647A5: xaccTransEqual (Transaction.c:981)
==515314==    by 0x15C0E8: test_xaccTransEqual(Fixture*, void const*) (utest-Transaction.cpp:901)
...
==515314==  Address 0x8725260 is 0 bytes inside a block of size 59 free'd
==515314==    at 0x484620F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515314==    by 0x15BDB1: test_xaccTransEqual(Fixture*, void const*) (utest-Transaction.cpp:883)
...
==515314==  Block was alloc'd at
==515314==    at 0x4843828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515314==    by 0x5618677: __vasprintf_internal (vasprintf.c:116)
==515314==    by 0x520E8C1: g_vasprintf (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
==515314==    by 0x51DBBE0: g_strdup_vprintf (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
==515314==    by 0x51DBC9C: g_strdup_printf (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
==515314==    by 0x15BBAC: test_xaccTransEqual(Fixture*, void const*) (utest-Transaction.cpp:879)
...

ok 78 /engine/Transaction/xaccTransEqual
2023-05-15 20:03:23 +01:00
Richard Cohen
dc62959553 Fix crash in test-engine on Arch
Thanks, Valgrind:

==515314== Invalid read of size 8
==515314==    at 0x4ED46F3: gncInvoiceRemoveEntries (gncInvoice.c:767)
==515314==    by 0x142B35: teardown_with_invoice (utest-Invoice.c:274)
...
==515314==  Address 0x8557b98 is 8 bytes inside a block of size 24 free'd
==515314==    at 0x484620F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515314==    by 0x51B565D: g_list_remove (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
==515314==    by 0x4ED42EF: gncInvoiceRemoveEntry (gncInvoice.c:688)
==515314==    by 0x4ED46A2: gncInvoiceRemoveEntries (gncInvoice.c:781)
==515314==    by 0x142B35: teardown_with_invoice (utest-Invoice.c:274)
...
==515314==  Block was alloc'd at
==515314==    at 0x4843828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==515314==    by 0x51BD948: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
==515314==    by 0x51B1CB9: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7600.1)
==515314==    by 0x4ED4271: gncInvoiceAddEntry (gncInvoice.c:676)
==515314==    by 0x142401: setup_with_invoice (utest-Invoice.c:142)
...

ok 57 /engine/gncInvoice/post trans - vendor bill
2023-05-15 20:03:23 +01:00
Richard Cohen
80e9d9c35d scanf supports %lld since C++11, C99 2023-05-15 13:21:30 +01:00
Richard Cohen
3957272ef0 Fix some typos in comments 2023-05-13 13:00:25 +01:00
John Ralls
bb423e4484 Merge CrfzdPQM6's 'b_betterCurrencyBudgetReporting' into stable. 2023-04-29 12:04:45 -07:00
Daniel Johnson
04b0317119 Demonstrate fx handling in budget report 2023-04-29 12:01:36 -07:00
John Ralls
df878c6a3d Merge Maarten Bosmans's 'memleak-fixes' into stable. 2023-04-29 11:54:41 -07:00
Maarten Bosmans
6be682b645 Store allocated temporaries in a variable so they can be freed
If a function that returns an allocated pointer is passed directly into
something that does not take ownership of the pointer, the allocation is
leaked.  This can be fixed by assigning the pointer to a new variable
and freeing it after operation on the memory.
2023-04-29 11:51:43 -07:00
Christopher Lam
1a7fcb69c0 [gnc-features.cpp] remove_if requires <algorithm> 2023-04-29 08:17:22 +08:00
John Ralls
8481f062d4 Create obsolete features list with first member book_currency.
Obsolete features set in the book will be removed from the book's
KVP and ignored. Note the warning in the comment!
2023-04-28 17:08:04 -07:00
John Ralls
0d175dce12 Refactor gnc-features.
* type aliases to gnc-features.h
* string_views to avoid copying (all of the strings are static)
* qof_book_get_unknown_features returns a FeatureSet
2023-04-28 16:31:07 -07:00
John Ralls
e8c80f2f5c Restore existence, but not implementation, of GNC_FEATURE_BOOK_CURRENCY.
At least one user has managed to get it set on their book so even
though it was supposed to be unimplemented it got through somehow.
Restoring it allows books with it set to load.
2023-04-28 14:15:59 -07:00
Muhammadyusuf
02e24ccf96
edit: use &apos; instead of ` symbol 2023-04-24 02:04:35 +05:00
Muhammadyusuf
dca596ac84
edit: Fix local symbol of uzbek sum 2023-04-24 01:49:23 +05:00
Vincent Dawans
761d7f29a5 Bug 765920 - Running balance not accurate when sorted different ways
- Renamed option to "Account Balance" to avoid confusion with running
  total.
- Added helper function to ensure running balance and balance forward
  are only shown when transaction are grouped by account and sorted as
  in register. In that case column heading remains "Running Balance"
  and balance forward is shown. Otherwwise column heading is renamed
  "Account Balance" and balance forward is not shown.
- Also added missing code for Common Currency conversion.
2023-04-21 09:13:16 -07:00
John Ralls
4a5b897d89 Bug 798863 - Crash on clicking Settings button second time
Ensure that dialog resources stored in options are freed when the
dialog is destroyed.

The crash happened when a new dialog replaced the old one on the options
and the old one's destructors tried to access a dangling reference to
a GtkWidget.
2023-04-20 20:08:38 -07:00
John Ralls
f4f481fe38 Bug 798812 - crashes after I open a customer report and select…
Edit/Report Options

As a result of auto instead of auto& in a std::visit call which
resulted in a temporary option whose GncOwner* was destroyed before
we could use it.
2023-04-15 13:29:40 -07:00
Robert Fewell
0d84506a5e Bug 798851 - Account Balance 'include subaccounts' not saved
The defaults for the account were removed by mistake in a previous
commit, added them back.
2023-04-12 11:20:32 +01:00
Maarten Bosmans
0d86be6d2a [test] Properly destroy resources on end of tests
This fixes memory leaks that are only present in testing code.
Not very useful on itself, but it does make it easier to fix memory
leaks and other AddressSanitizer problems in actual gnucash code later.
2023-04-02 21:12:50 +02:00
Maarten Bosmans
ed3fe00880 [test] Use test fixture to initialize and destroy resources 2023-04-02 21:12:50 +02:00
Maarten Bosmans
35aeed45ec [engine] Remove two replace functions from KvpValue
These were not used outside a test.

And that test was not leak free, as a result of the functions not doing
what they are supposed to do when the current value is not of the type
that is expected. (NULL is returned, but the value is not replaced)
2023-04-02 21:12:50 +02:00
Richard Cohen
6ba5bb326a Fix dereference of expired temporaries.
Reported by clang 15.0.7, which will be in Ubuntu 23.04, -Wdangling-gsl
2023-03-31 11:27:33 -07:00
Richard Cohen
9fa2a48fe1 Fix build on gcc-8 & 9.
See https://lists.gnucash.org/pipermail/gnucash-devel/2023-March/046617.html
2023-03-30 18:25:23 -07:00
John Ralls
00c560d8f5 Move operator==(const GncGUID&, const GncGUID&) to guid.[ch]pp. 2023-03-18 13:53:49 -07:00
John Ralls
352ab8a0e5 Merge Richard Cohen's 'minor-options-fixes' into master. 2023-03-18 12:19:50 -07:00
Richard Cohen
24f52d9b17 Remove incorrect operator!= for GncItem
It's better to use the default std::pair implementation

- spotted by clang-tidy bugprone-suspicious-string-compare
- will always return false, because type is the same

Also,
- remove redundant "using GncItem ..."
2023-03-17 16:50:17 +00:00
Richard Cohen
b5f3f99035 Fix incorrect use of remove_if()
- spotted by clang-tidy bugprone
- probably no visible effects because of uniqueness, and other checks

libgnucash/engine/gnc-optiondb.cpp:149:5: warning: this call will remove at most one item even when multiple items should be removed [bugprone-inaccurate-erase]
    m_options.erase(std::remove_if(m_options.begin(), m_options.end(),
    ^

libgnucash/engine/gnc-optiondb.cpp:358:5: warning: the value returned by this function should be used [bugprone-unused-return-value]
    std::remove_if(m_callbacks.begin(), m_callbacks.end(),
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
libgnucash/engine/gnc-optiondb.cpp:358:5: note: cast the expression to void to silence this warning
2023-03-17 16:50:11 +00:00
John Ralls
b4b8431984 Bug 798778 - GnuCashquits abruptly when attempting to edit options…
for certain reports.

Those reports being ones using complex options, apparently because
the callbacks weren't protected from Guile's garbage collector.

So replace the anyway ugly hack of a void* with a std::any wrapping
a class holding a std::unique_ptr with a custom deleter. The
constructor calls scm_gc_protect_object on the SCM containing the
callback and the custom deleter calls scm_gc_unprotect_object. The
copy constructor, required for std::any, makes a new std::unique_ptr
and calls scm_gc_protect_object again ensuring that the protect and
unprotect calls are symmetrical.

Meanwhile std::any hides the Guile dependency from all the classes
that don't need to know about it. The only ugliness is that there's
no good place to put a common implementation of SCNCallbackWrapper so it's
repeated in gnc-optiondb.i and dialog-options.cpp.
2023-03-16 17:50:06 -07:00
John Ralls
a44b3664e2 [c++options] Implement GncOptionGncOwnerValue class.
GncOwners aren't QofInstances and have limited lifetimes so an option
must hold its own, wrapped in std::unique_ptr for memory management.
2023-03-14 16:11:39 -07:00
John Ralls
8db8105850 [c++options] Warn when an option variant type's set_value isn't found. 2023-03-14 16:11:39 -07:00
John Ralls
83829e6513 Merge branch 'maint' 2023-03-14 10:43:45 -07:00
John Ralls
1020bde89c Fix crashes in test-engine on Arch Linux.
Root cause is mutating a list while it's iterating. We're able to
protect it in two cases, have to copy it in xaccTransScrubGainsDate.
2023-03-14 10:33:39 -07:00
Geert Janssens
d75ab275f1 Eliminate gnc-csv-account-map.[ch]
The code is was only used by the csv import assistant and forced
gtk as a dependency on gnc-imp-props-tx

Part has been moved to Account, other bits have
been moved to the importer code where they were
used.
2023-03-13 19:58:10 +01:00
Richard Cohen
329a2f7d42 Guard against some possible null pointer dereferences
Found by gcc 12 when compiling with "-O2 -Wnull-dereference"
2023-03-08 11:00:56 +00:00
John Ralls
cdb674ebf1 [c++options]Really fix the gnc_option_db_lookup_string_value leak
By deleting the function and using GncOptionDbImpl::lookup_string_option
directly. It returns a string that we don't have to worry about
memory-managing.

Also create a new GncOptionDbImpl::set_string_option to replace
gnc_option_db_set_string_value.
2023-03-06 11:43:50 -08:00
John Ralls
92071e8844 [c++options] Fix leak. 2023-03-05 10:14:20 -08:00
John Ralls
f735c64cac Merge Richard Cohen's 'extern-c-part2' into master. 2023-03-04 13:51:07 -08:00
Richard Cohen
7b47c07f8e Don't use extern "C" around #includes
Some I missed the first time. Some are new.
2023-03-03 18:55:42 +00:00
John Ralls
bbfa378783 Don't crash and do pass tests. 2023-03-02 17:03:39 -08:00
John Ralls
af02dae286 Fixups for merging into master instead of maint. 2023-03-02 17:02:46 -08:00
John Ralls
1eecb9f5c0 [c++ options] Fix locale dependency in test-gnc-option-scheme-output.
Created by using std::to_string() in GncOptionRangeValue::serialize.
It wraps sprintf that reads the locale. Use ostringstream instead.
2023-03-02 12:22:55 -08:00
Christopher Lam
76014f18a0 [account.cpp] don't cache char* [fails] 2023-03-01 23:58:22 +08:00
Christopher Lam
3d381eb6fd [gnc-lot] don't cache char* 2023-03-01 19:49:33 +08:00
Christopher Lam
50f998fad8 [gncInvoice] don't cache char* 2023-03-01 19:49:27 +08:00
Christopher Lam
c9dc71978b [gnc-commodity] don't cache char* 2023-03-01 19:49:20 +08:00
Christopher Lam
57fcaabd8f [Split.c] don't cache char* 2023-03-01 19:49:04 +08:00
John Ralls
675d894128 Merge Richard Cohen's 'cleanup-options' into master. 2023-02-27 16:33:00 -08:00
John Ralls
ca73b00039 Merge Richard Cohen's 'cleanup-boost' into master. 2023-02-27 16:31:53 -08:00
John Ralls
3d5e27982f Merge branch 'maint' 2023-02-27 16:24:44 -08:00
John Ralls
7f0353adc4 Fix a missed g_value_dup_string and some no longer used variables. 2023-02-27 16:19:50 -08:00
John Ralls
8a7c539258 Bug 798748 - Transaction Notes field's value does not appear in...
reverse transaction.

The proximate cause was that xaccTransBeginEdit put the KVP cache
variable of the new transaction in a state that prevented the value
from being copied. More generally the KVP cache variables didn't
handle any invalidating events.

With the change to GValue usage in qof_instance_get_kvp it's now
a simple memory dereference with no copying except for POD types
so caching is no longer useful. This commit removes caching from
Transaction, eliminating the notes problem.
2023-02-27 14:54:46 -08:00
John Ralls
ddc3f28899 [kvp] Use static strings and boxed in gvalue_from_kvp_value.
Saves allocating and copying complex values, avoiding potential
memory leaks.
2023-02-27 14:54:02 -08:00
Richard Cohen
9f06859390 Remove references to old boost versions
we already require 1.67
2023-02-27 11:48:09 +00:00
Richard Cohen
3d995de2ab Refactor: use default GncOptionValue copy constructor 2023-02-27 11:46:39 +00:00
Richard Cohen
1b0af4246a Refactor: remove extra template parameter from member functions 2023-02-27 11:46:34 +00:00
Richard Cohen
87c52f53fa Update some references to hello-world.scm 2023-02-27 11:36:04 +00:00
Richard Cohen
ec169e6e24 Fix some non-translatable typos 2023-02-27 11:32:12 +00:00
John Ralls
6ab7b16d62 [c++options] Restore the ability to set plot sizes in pixels.
Enable and fix the previously untested GtkOptionGtkUIItem::PLOTSIZE.

This has the potentially unfortunate side effect that integer range
options are assumed to be plot sizes. That's correct for now, but
if some report comes along that needs an integer range option for
something else it will have to be differentiated.
2023-02-25 16:25:36 -08:00
Geert Janssens
549c93e005 Fix test for import-backend
Another split function needed mocking
2023-02-23 12:33:31 +01:00
Richard Cohen
bddb4468fa Import GLIB2 as a target, and use it to simplify the CMakeLists 2023-02-21 12:59:42 +00:00
Robert Fewell
ec7cc27d6d Add tests for default invoice report book property 2023-02-21 10:48:34 +00:00
Robert Fewell
76f0e3a97e Add some PWARN messages to the default invoice report
book functions
2023-02-21 10:44:07 +00:00
Richard Cohen
9c6ad222a9 [-Wunused-function] - remove 2023-02-16 09:20:59 +00:00
Richard Cohen
0dd406de10 [-Wunused-lambda-capture] (clang) - remove 2023-02-16 09:20:59 +00:00
Richard Cohen
d4dfe4e279 [-Wunused-local-typedef] - remove
libgnucash/engine/test/utest-Account.cpp:2414:11: warning: typedef ‘using AcctTypeType = struct std::underlying_type<GNCAccountType>’ locally defined but not used [-Wunused-local-typedefs]
 2414 |     using AcctTypeType = std::underlying_type<GNCAccountType>;
      |           ^~~~~~~~~~~~
2023-02-16 09:19:19 +00:00
Richard Cohen
0798bce2a6 [-Wunused-value] - remove
borrowed/jenny/jenny.c: In function ‘next_builder’:
borrowed/jenny/jenny.c:1164:5: warning: statement with no effect [-Wunused-value]
 1164 |     for (i; i<n-1; ++i) {            /* reset all less significant positions */
      |     ^~~
borrowed/jenny/jenny.c:1172:5: warning: statement with no effect [-Wunused-value]
 1172 |     for (i; i<n-1; ++i) {            /* reset all less significant positions */
      |     ^~~
borrowed/jenny/jenny.c: In function ‘confirm’:
borrowed/jenny/jenny.c:1797:7: warning: statement with no effect [-Wunused-value]
 1797 |       for (i; i<n-1; ++i) {          /* reset all less significant positions */
      |       ^~~
borrowed/jenny/jenny.c:1805:7: warning: statement with no effect [-Wunused-value]
 1805 |       for (i; i<n-1; ++i) {          /* reset all less significant positions */
      |       ^~~

libgnucash/backend/xml/io-gncxml-v2.cpp: In function ‘gboolean qof_session_load_from_xml_file_v2_full(GncXmlBackend*, QofBook*, sixtp_push_handler, gpointer, QofBookFileType)’:
libgnucash/backend/xml/io-gncxml-v2.cpp:806:40: warning: value computed is not used [-Wunused-value]
  806 |                 g_thread_join (thread) != nullptr;
      |                 ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~

libgnucash/engine/Account.cpp: In function ‘void xaccFreeAccount(Account*)’:
libgnucash/engine/Account.cpp:1428:17: warning: statement has no effect [-Wunused-value]
 1428 |     priv->color == nullptr;
      |     ~~~~~~~~~~~~^~~~~~~~~~
libgnucash/engine/Account.cpp:1429:22: warning: statement has no effect [-Wunused-value]
 1429 |     priv->sort_order == nullptr;
      |     ~~~~~~~~~~~~~~~~~^~~~~~~~~~
libgnucash/engine/Account.cpp:1430:17: warning: statement has no effect [-Wunused-value]
 1430 |     priv->notes == nullptr;
      |     ~~~~~~~~~~~~^~~~~~~~~~
libgnucash/engine/Account.cpp:1431:18: warning: statement has no effect [-Wunused-value]
 1431 |     priv->filter == nullptr;
      |     ~~~~~~~~~~~~~^~~~~~~~~~

libgnucash/engine/gnc-int128.cpp: In function ‘void decimal_from_binary(uint64_t*, uint64_t, uint64_t)’:
libgnucash/engine/gnc-int128.cpp:898:36: warning: right operand of comma operator has no effect [-Wunused-value]
  898 |     d[3] = (hi >> 32) & bin_mask, 0;
      |                                    ^
2023-02-16 09:19:19 +00:00
Richard Cohen
1c6679720b Use some unused variables 2023-02-06 14:20:31 +00:00
Richard Cohen
78ec20515b Remove some unused variables - and the initialization
- checked that any side effects were irrelevant
2023-02-06 14:20:28 +00:00
Richard Cohen
c819b03a17 Remove some unused variables - leave the side effect 2023-02-06 14:19:29 +00:00
Richard Cohen
ea2d3be217 Remove some unused variables with obviously no side effects 2023-02-06 14:19:22 +00:00
Robert Fewell
45a07463fb Change max timeout to 20 seconds for default invoice report 2023-02-05 10:21:56 +00:00
Geert Janssens
60209a766f Merge branch 'csv_import' 2023-02-04 19:13:16 +01:00
Geert Janssens
2d8bb6f62f Bug 796955 - Import CSV - Single-line two-currency transactions can't be imported
Behaviour is as follows:
If
  single line provides a price
And
  at some point in the import process we get into a
  situation where the base account and transfer
  account have a different commodity
Then
  transfer_acct amount = base_acct amount * price

If on the other hand base_acct and transfer_acct turn
out to have the same commodity, price is ignored.
2023-02-04 18:56:02 +01:00
Geert Janssens
99506d331a Reduce GncImportMatchMap to just the account
There is no added value in storing the book and account together
The book is easily retrieved from the account (as was
illustrated in the gnc_account_imap_new function).

I looked through the commit history to understand why this struct
was originally created and a long time ago it also had
a reference to a kvp frame.
2023-02-04 16:53:20 +01:00
Geert Janssens
51706f289c Minor corrections in comments 2023-02-04 16:43:46 +01:00
John Ralls
7bb14b9caa Merge Richard Cohen's 'use-reference-for-loop' into master 2023-02-02 14:32:14 -08:00
Robert Fewell
07f3f536cc Allow to select saved report on print invoice button
This change was inspired by mildred's #PR1247 and uses the new
GncReportCombo to allow selection of 'Saved Invoice reports' when the
invoice print button is used or when printing multiple invoices.

This change presents a dialog with the default for the report combo set
to the properties setting. This dialog has a timeout which is
adjustable under properties and will stop if a key is pressed or combo
popped so that a different report template can be selected and used.
There is also an 'OK' button that stops the time out and prints and a
'Cancel' button which cancels the print.
2023-02-02 14:05:53 +00:00
Robert Fewell
019214f1c2 Bug753307 - Custom Report be selectable as default Report for Printing
This commit changes the preference in Business->'Report for Printing'
to be saved as a book property and allow the selection of any Invoice
Report to be used as the default.
2023-02-01 16:29:11 +00:00
Richard Cohen
d8f45f2443 Use const references for for-loops to avoid unnecessary copies
Found by clazy - clazy-range-loop-reference
2023-01-31 14:44:57 +00:00
Christopher Lam
119356752f Merge branch 'maint' 2023-01-30 09:56:13 +08:00
Geert Janssens
894f8241e1 Revisit invoice payment in multi-currency context
- Show proper amount in dialog when applying or editing an existing transaction as payment
- Be more careful not to waste the existing payment split
- If the user changed the payment amount while starting from an existing transaction
  unreconcile the changed payment split
- Avoid needlessly changing transaction currency (only do so if the user chose
  a new transfer account and the old currency is neither the new transfer account's
  currency nor the post account's currency)
2023-01-29 23:09:06 +01:00
luzpaz
67ab9e90d2 Fix some typos 2023-01-26 13:48:58 +01:00
Christopher Lam
17820ec261 Merge branch 'maint' 2023-01-26 18:40:44 +08:00
John Ralls
f4c6d65395 Merge Bob Fewell's 'nofree' into maint. 2023-01-24 13:25:02 -08:00
John Ralls
f6919e60a7 Merge Richard Cohen's 'cleanup' into master. 2023-01-24 12:05:47 -08:00
John Ralls
46f9fb01c9 Simplify gnc_commodity equality and compare functions.
gnc_commodity_compare is used for sorting and so needs to have a less-than
return value. The only place it's used presents nothing to the UI; a GncGUID
ordering is fast and stable.

GnuCash allows only one commodity per book for any namespace/mnemonic pair, so
the exhaustive string comparisons are superflous. While the current engine
design allows only one instance of any object, meaning that a pointer comparison
is sufficient to determine equality, that may not be true in the future, but the
GncGUID is guaranteed to sufficiently identify a single commodity. Note that
gnc_commodity_equiv is used to enforce that single-commodity rule and so cannot
use GncGUID comparison.
2023-01-24 10:46:01 -08:00
Richard Cohen
6927535a0a Remove unused test function get_object_is_initialized in qofobject.cpp 2023-01-24 13:36:37 +00:00
Richard Cohen
e83c91050c Remove unneeded dummy.cpp 2023-01-24 13:36:02 +00:00
Richard Cohen
d6ac56ce5f Re-enable -Waddress - gncInvoiceLookup etc. are now inline functions, not macros
- Remove outdated comments
2023-01-24 13:35:22 +00:00
Richard Cohen
3360a6d13b Remove extra semicolons
Courtesy of gcc -pedantic
2023-01-24 13:22:18 +00:00
John Ralls
046e4a156e Silence Clang deprecation warnings about sprintf. 2023-01-23 12:54:25 -08:00
John Ralls
dd2497416c Merge Richard Cohen's 'internal-extern-c' into master. 2023-01-23 11:27:05 -08:00
John Ralls
60c06debce [c++options] Don't crash when find_option returns nullopt. 2023-01-23 11:22:35 -08:00
Richard Cohen
1cec0cb3f3 Use internal extern "C" { ... } for C++
- removes warnings compiling swig engine
...
[ 10%] Generating swig-engine.cpp
.../libgnucash/engine/engine-helpers.h:31: Warning 313: Unrecognized extern type "C++".
.../libgnucash/engine/gnc-date.h:83: Warning 313: Unrecognized extern type "C++".
.../libgnucash/engine/qofquery.h:90: Warning 302: Identifier 'QofQuery' redefined (ignored),
.../libgnucash/engine/gnc-option.hpp:55: Warning 302: previous definition of 'QofQuery'.
.../libgnucash/engine/gnc-commodity.h:56: Warning 313: Unrecognized extern type "C++".
.../libgnucash/engine/gncBusiness.h:40: Warning 313: Unrecognized extern type "C++".
.../libgnucash/engine/gncEntry.h:37: Warning 313: Unrecognized extern type "C++".
2023-01-23 18:40:01 +00:00
Richard Cohen
19bbde7000 Fix some typos 2023-01-23 15:01:46 +00:00
John Ralls
9a1a90d8d0 Merge branch 'maint' 2023-01-22 10:49:29 -08:00
richardcohen
f3cc223f5f Fix some bad code formatting 2023-01-22 10:39:48 -08:00
Christopher Lam
fd007a0af1 Merge branch 'maint' 2023-01-13 07:45:31 +08:00
Robert Fewell
6df866f876 Add tests for the reconcile account functions 2023-01-12 14:38:08 +00:00
Robert Fewell
fd37ee997d Fix getting xaccAccountGetReconcilePostponeBalance
Change the G_VALUE from a INT64 to BOXED.
2023-01-12 14:38:08 +00:00
John Ralls
fb9947b7b6 Rename GncDateTime's ymd to gnc_ymd to avoid a name conflict with Carbon. 2023-01-09 14:36:06 -08:00
Christopher Lam
c65b36490a Merge branch 'master-progress' 2023-01-06 16:33:46 +08:00
Frank H. Ellenberger
506a1b3c5e Merge branch 'maint' 2023-01-06 01:31:13 +01:00
John Ralls
b922cfd78d Bug 798679 - Unicode normalization should be used for comparison but not stored.
Change to NFC normalization for all comparisons because the Unicode
meaning of compatible might collide with the user's intent.
2023-01-04 13:19:36 -08:00
John Ralls
31d79e3004 Merge Bob Fewell's 'bug798673' into master. 2022-12-30 16:00:12 -08:00
Christopher Lam
259881f940 [gnc-optiondb] add some more renamed options
following ab13b01f8c Replace ... with … in all translatable strings.
2022-12-24 22:14:35 +08:00
John Ralls
ab13b01f8c Replace ... with … in all translatable strings.
Also a few other places like translator comments and report options.

Replaces https://github.com/Gnucash/gnucash/pull/1033.
2022-12-23 12:43:54 -08:00
John Ralls
b8c0673526 Merge branch 'maint' 2022-12-19 12:11:32 -08:00
Robert Fewell
3be25ff0a9 Add some tests for the account functions 2022-12-16 15:16:58 +00:00
Robert Fewell
a15c6f81b3 Allow the balances of sub accounts to be used in limits 2022-12-16 15:16:53 +00:00
John Ralls
73a134730f Bug 798680 - Not able to match a reverse transaction of a...
previously matched transaction.

Cloned transactions and copied splits shouldn't keep the online-id
slot.
2022-12-13 13:13:13 -08:00
Robert Fewell
518ecfe041 Add some functions that would allow adding a balance limit to accounts 2022-12-10 13:37:41 +00:00
Christopher Lam
bfc325f63c Merge branch 'maint' 2022-11-27 16:12:46 +08:00
Marco Scardovi
6fe2028bca
Fix test
Signed-off-by: Marco Scardovi <mscardovi@icloud.com>
2022-11-24 23:20:07 +01:00
Robert Fewell
59d95a4ce6 Bug 798545 - Crash when updating document link on vendor bill
There were two issues here, the first one was that the copied doclink
was pointing to the original doclink which lead to a double-free. The
second is the setting of the doclink on the copied invoice needs to be
done with gncInvoiceSetDocLink otherwise on closure the doclink value
will disappear.
2022-11-24 11:16:01 +00:00
Christopher Lam
3d8a28898d [gnc-budget] gnc_budget_get_account_period_note returns a const
to harmonize with all other char getters
2022-11-19 10:35:49 +08:00
Christopher Lam
2ee0c98200 [gnc-budget] use operator[] instead of find() and insert()
- avoid hashing Account* twice. one call to operator[] is sufficient.
- don't need use std::move with better constructors
- sanity check - can't have a budget with num_periods = 0
- remove unused headers
2022-11-19 10:35:43 +08:00
Christopher Lam
3e5fcc8709 Merge branch 'maint' 2022-11-15 22:20:54 +08:00
Christopher Lam
6f80c548e6 [gtest-qofevent.cpp] comprehensive tests for qofevent 2022-11-05 09:25:24 +08:00
Christopher Lam
05ffd3d4eb [budget-feature] move unset_feature call to gnc_budget_gui_delete_budget
because gnc_budget_gui_delete_budget is a more general function to
delete a budget.
2022-10-31 12:03:58 +08:00
Christopher Lam
b87aa004f9 [test-qofbook] add tests for unknown features
tests that gnc_features_test_unknown returns a suitable error message
2022-10-31 10:40:12 +08:00
John Ralls
b9077bccd3 Bug 798640 - Segfault when running saved report 2022-10-29 17:45:35 -07:00
Christopher Lam
fc94b41c81 Merge branch 'maint' 2022-10-29 21:53:57 +08:00
Christopher Lam
4716af24e4 Merge branch 'maint' 2022-10-29 21:16:34 +08:00
Christopher Lam
f2354d6b2a [test-qofbook.c] add test for gnc_features_set_unused 2022-10-29 21:01:08 +08:00
Christopher Lam
1516bb18b0 [gnc-features.cpp] backport gnc_features_set_unused from master 2022-10-29 21:01:01 +08:00
Christopher Lam
a078921a33 [qofbook.cpp] backport qof_book_unset_feature from master 2022-10-29 21:00:54 +08:00
John Ralls
cf088f2a70 Merge John Ralls's 'Bug798614' into maint. 2022-10-28 15:27:28 -07:00
Christopher Lam
093aa81ed1 [qofbook.cpp] deprecate qof_book_get_features 2022-10-28 21:57:15 +08:00
Christopher Lam
8192deff37 [gnc-features.cpp] convert to cpp
- don't need to create/destroy GHashTable for each feature query
- plugs leak: g_hash_table_unref (features_used) not always called properly
- to check 1 feature, don't need to traverse whole GHashTable
2022-10-28 20:50:35 +08:00
Christopher Lam
6f6d2fef48 [test-qofbook] basic features test
sets a feature and tests it's set. it's impossible to design a book
with unknown features using the API.
2022-10-27 20:10:49 +08:00
Geert Janssens
e97fc3e408 Drop price-quotes.scm, gnc-fq-helper.in and gnc-fq-check.in - no longer used 2022-10-02 11:50:26 -07:00
Geert Janssens
a6771754d5 GncQuotes - start implementation of fetch/fetch_all 2022-10-02 11:50:25 -07:00
John Ralls
b0ae402c23 Limit instantiation of GncInt128 constructors to integral values.
Instead of using static_assert. This prevents the compiler from even
trying and avoids weird compilation errors when testing types for
instantiating other templates.
2022-10-02 10:15:15 -07:00
John Ralls
3c75d212ab Fix build on Apple Silicon or maybe Apple-clang-14.0
The compiler complains that there's no matching
gnc_register_number_range_option for GncOptionDB*, which without this
commit is true because the explicit templates are for GncOptionDBPtr&.
Note that the original template definition is for GncOptionDB* and
that the header-defined inlines that take GncOptionDBPtr& call the
GncOptionDB* version.
2022-10-02 10:15:01 -07:00
John Ralls
8cb8f5067d Remove non-ISO4217 currency codes from gnc-euro table.
They're not reachable because they don't have commodities associated with them.
2022-09-30 15:12:19 -07:00
John Ralls
d8417c3cfa Move gnc-euro.[ch] to engine and unit test it. 2022-09-30 15:12:12 -07:00
John Ralls
2774f8f88c Bug 798614 - Croatia to join the Euro
Add HRK to the conversion array.
2022-09-30 13:51:28 -07:00
John Ralls
3949821da6 Merge branch 'maint' 2022-09-25 11:50:10 -07:00
John Ralls
2505955ab9 Fix test failure from Bug 798616 fix. 2022-09-20 09:09:34 -07:00
John Ralls
7c350c3ae5 Bug 798616 - Can't register amount greater than 9,000,000,000
Because when loading the value the split in the xml backend doesn't yet
have a parent so the code tried to convert to GNC_COMMODITY_MAX_FRACTION
and if the numerator was larger than 10^10 that would overflow.

To fix it this changes the "don't know" response to get_currency_denom
and get_commodity_denom to GNC_DENOM_AUTO which will normally leave
the denominator alone.
2022-09-19 18:17:58 -07:00
Christopher Lam
161b07b241 Merge branch 'maint' 2022-09-09 21:23:40 +08:00
Frank H. Ellenberger
47fa8b281e Merge PR #1425 into maint 2022-09-07 03:16:05 +02:00
John Ralls
a807d3e6b7 Create function gnc_tm_get_today_neutral.
To complement gnc_tm_get_today_begin and gnc_tm_get_today_end.
2022-09-06 14:35:11 -07:00
luz paz
ba94730a23 Fix various typos
Found via `codespell`
2022-09-06 10:44:29 -04:00
John Ralls
95361ad060 [options] Move gnc-options test to engine/test/CMakeLists.txt. 2022-08-29 17:05:33 -07:00
John Ralls
4ae17d12c7 [options] Move options from app-utils to engine.
Options is required for book options that are stored as part of the data
 file and so belongs in engine.
2022-08-25 22:09:56 -07:00
Christopher Lam
0b5a4cd298 Merge branch 'maint' 2022-08-03 20:38:08 +08:00
Christopher Lam
d1aefc851d [sx-book] free sx_list before g_object_unreffing sxes 2022-08-01 23:43:08 +08:00
John Ralls
688832b5f8 Bug 798585 - segfault running sample script
The root cause of which is that on recent releases of GLib (recent
meaning 2.66 in the current Debian stable!) g_type_instance_get_private
looks in the wrong place for the private data. When running the script
in question it returned NULL and since the code didn't check for a valid
pointer, it crashed.

So this change replaces all calls to g_type_instance_get_private with
the function [type_prefix]_get_instance_private() added in glib-2.36
except for two register2 files that have been removed from master; those
are ignored to avoid unnecessary merge conflicts.
2022-07-30 16:50:51 -07:00
Christopher Lam
7880f9b16f [SchedXaction.c] free list of recurrences 2022-07-29 12:23:09 +08:00
Christopher Lam
f1adb5da34 Merge branch 'TXN_TYPE-is-dynamic' xaccTransGetTxnType into maint #1201 2022-07-18 09:24:32 +08:00
Christopher Lam
ec3e996f92 tests xaccTransGetTxnType heuristics
tests TXN_TYPE_NONE in utest-Transaction.c

testing TXN_TYPE_INVOICE, TXN_TYPE_PAYMENT, and TXN_TYPE_LINK will
require valid posted invoices, so, are best tested in utest-Invoice.c
2022-07-18 09:24:05 +08:00
Christopher Lam
fd12d3900c [Transaction.c] use heuristics to determine txn->txn_type 2022-07-18 09:24:05 +08:00
Robert Fewell
ce4768c357 Bug 798565 - Import map editor entry deletion
When a top level bayesian entry is deleted, the book is not marked
dirty and so the save button is not highlighted. Deleting individual
entries did mark book dirty.

Fixed in gnc_account_delete_all_bayes_maps by wrapping the deletion
with xaccAccountBeginEdit/CommitEdit block.
2022-07-17 12:51:38 +01:00
John Ralls
3fd8bd9ddf Merge branch 'maint' 2022-07-16 17:15:20 -07:00
Christopher Lam
aa43c198c6 [Transaction.c] don't set TxnType kvp if it is the same as before
will avoid dirtying the transaction.
2022-07-08 18:15:09 +08:00
John Ralls
9f6d495ca1 Fix use-after-free crash in utest-Invoice. 2022-07-08 18:12:26 +08:00
John Ralls
1e6c679e71 Merge branch 'maint' 2022-06-14 12:53:16 -07:00
John Ralls
903cbdcad3 Bug 798547 - Calculated Due Date is short 1 day when posting on...
day of fall change from Daylight Time to Standard Time.

Really any day where the period crosses the dst->std change, and
since the date dialog returns local midnight for the time that includes
the day of the change.

Convert both the parameter time and the return time to neutral time
to ensure that the interval is handled correctly.
2022-06-02 15:46:59 -07:00
Christopher Lam
670902d5a8 Bug 798535 - Crash when increasing the number of periods in a budget
because in the SQL backend, gnc_budget_commit_edit will update the sql
by reading from vectors with an increased priv->num_periods.
2022-05-18 17:37:05 +08:00
Robert Fewell
27cab58bf2 Correct some text describing some date functions. 2022-05-08 10:09:50 +01:00
Robert Fewell
c000a890ad Bug 798501 - Balance wrong date end of account period
With the accounting period preference settings set to 'Start/End of
previous quarter' and balance sheet report using 'End of accounting
period' the date is wrong, currently is 30/03/2022 when it should be
31/03/2022.

Simplify gnc_gdate_set_quarter_end to get correct last day and
subtract the 3 months befor calling said function.
2022-05-08 10:09:50 +01:00
Christopher Lam
dc620d4b24 Merge branch 'maint' 2022-04-22 13:43:47 +08:00
Christopher Lam
e1d52963ed [account.cpp] restore breadth-first search for 2 functions
gnc_account_lookup_by_name and gnc_account_lookup_by_code were
searching breadth-first and accidentally changed to depth-first in
4.7.

as reported in https://github.com/Gnucash/gnucash/pull/1101#issuecomment-1098146573
2022-04-15 23:35:38 +08:00
John Ralls
95487eb4a0 Merge branch 'maint'
# Conflicts:
#	gnucash/gnome/window-reconcile2.c
#	libgnucash/app-utils/options.scm
#	libgnucash/engine/gnc-numeric.cpp
2022-04-14 18:02:17 -07:00
Christopher Lam
fae7ea02cd [account.cpp] gnc_accounts_and_all_descendants converted from scm
much more efficient than guile algorithm, avoids numerous repeated
GList<->SCM conversions, and traversals of account descendants.
2022-04-14 21:51:14 +08:00
Frank H. Ellenberger
2298590316 Merge PR #1309 into maint 2022-04-12 00:20:11 +02:00
Christopher Lam
736d223198 Merge branch 'maint-progress3' into maint #1312 2022-04-10 12:05:08 +08:00
Christopher Lam
0c4d438a0e [kvp-frame.cpp] expose iterator, skip inexistent frame 2022-04-09 17:45:44 +08:00
Christopher Lam
aab33954e7 [gnc-numeric.cpp] Reduce logging level of gnc_numeric exception message
Exceptions are expected in some use cases.
2022-04-09 07:21:15 +08:00
luz paz
8adedc2248 Fix various typos
Found via `codespell -q 3 -S *.po,./po,*.min.js,./ChangeLog*,./NEWS,./borrowed,./doc/README*,./AUTHORS,./libgnucash/tax/us/txf-de*,./data/accounts -L ans,ba,cas,dragable,gae,iff,iif,mut,nd,numer,parm,parms,startd,stoll`
2022-04-08 14:12:50 -04:00
Christopher Lam
6a668df168 [qofutil.h] don't recurse includes 2022-04-08 19:20:40 +08:00
Robert Fewell
83373563c3 Counter formats stored in wrong place.
The Book Options, counter formats were being stored under the 'options'
tree but need to be stored in the 'counter_format' tree similar to the
'counters' tree.
2022-04-07 10:33:11 +01:00
John Ralls
26b009c0f4 Bug 798500 - FTBFS (tests failure) on armhf
Ensure the transition_times are correctly aligned for their sizes
before attempting to copy them into the transitions vector.
2022-04-05 11:45:22 -07:00
Christopher Lam
ee8729dfb6 [account.cpp] char* must be freed 2022-04-02 14:14:50 +08:00
John Ralls
abd1a0b3f1 Merge branch 'c++options' 2022-03-29 15:58:22 -07:00
John Ralls
03cbbd1cd1 Merge branch 'maint' 2022-03-27 06:46:09 -07:00
John Ralls
109efe62b8 Rework default non-currency commodity namespace.
Separate the "All noncurrency" convenience category in the commodity
selector and the default non-commodity namespace proposed by the QIF
importer because they have different functions.

Also remove the namespace guessing code from qif-dialog because with
only one default non-currency namespace there's nothing to guess.
2022-03-24 18:10:32 -07:00
Christopher Lam
5388cc8e2c [kvp-frame.cpp] minor speedups
reserve vector, cache iterator from m_valuemap.find for reuse
immediately afterwards.
2022-03-18 16:29:13 +08:00
Christopher Lam
193a7aae5d Merge branch 'maint' 2022-03-12 15:18:43 +08:00
Christopher Lam
0052e3e483 [gnc-pricedb] add user:stock-transaction price source 2022-03-11 14:31:02 +08:00
John Ralls
c1001e6641 Better wording for tax table changed info message. 2022-03-10 13:44:47 -08:00
John Ralls
d841b322d0 Merge Frank Ellenberger's 'Bug684507' into maint. 2022-03-08 12:39:47 -08:00
John Ralls
ce2b89fd8c [business]Add diagnostic messages to GncEntry and GncInvoice. 2022-03-05 18:18:13 -08:00
John Ralls
9ad24321b4 Remove investment-type namespaces.
Leave it to users to categorize their non-currency commodities. In the
QIF importer default non-classifiable commodities to
GNC_COMMODITY_NS_NONCURRENCY.
2022-03-01 19:58:23 -08:00
Frank H. Ellenberger
c7f842c081 Bug 684507 - commodity namespace should be localized 2022-03-01 19:58:11 -08:00
Christopher Lam
bd4a457040 Merge branch 'maint-lightning-budget' into maint #1248 2022-03-02 07:37:17 +08:00
Christopher Lam
a47413860a Factor out GValue access for setters and getters 2022-03-02 07:36:59 +08:00
Christopher Lam
8f845df934 Factor out make_period_[data|note]_path 2022-03-02 07:36:59 +08:00
Christopher Lam
919f392c7a Use kvp C++ interface rather than GValue 2022-03-02 07:36:59 +08:00
Christopher Lam
6c4c2512db Use C++ STL instead of GLib 2022-03-02 07:36:59 +08:00
Christopher Lam
9088acabd8 [gnc-budget.cpp] convert to c++ 2022-03-02 07:13:24 +08:00
Christopher Lam
c1c198c9ff Merge branch 'maint' 2022-01-19 19:21:32 +08:00
Christopher Lam
f0de54ac7a Merge branch 'maint-798406' into maint #1240 2022-01-19 19:16:14 +08:00
Christopher Lam
8bc080b96d [gnc-budget] store budget kvp data onto memory upon first call.
then each getter will retrieve from memory rather than backend's kvp.
2022-01-17 09:34:46 +08:00
Christopher Lam
ef8d812d3f [utest-Budget] test data retention when modifying budget num_periods 2022-01-17 09:31:28 +08:00
Christopher Lam
87b0a41e9b [Split.c] return price==0 instead of 1, if !split, or amt==0 2022-01-10 19:19:25 +08:00
John Ralls
c1c75e8f81 Revert "Revert "Merge Stefan Bayer's 'SepaInternalTransfer' into maint.""
The original merge was of a PR based on master into maint, bringing
along all of the development changes in master along with it. We don't
want that so the merge was reverted and the PR's two changes
cherry-picked in. That fixed maint, but then the next regular merge of
maint into master naturally included that revert commit undoing the
changes in master. Not so good. Reverting the revert, this commit,
restores the changes, albeit with messed up history.
2022-01-08 15:10:53 -08:00
Christopher Lam
5603acba31 Merge branch 'maint' 2022-01-06 21:32:41 +08:00
Christopher Lam
f7ee644695 Amendment to 73822f97a [1/2] use heuristics to scrub budget signs
Testing income<0 to conclude "none reversal" is likely a more sound
strategy than testing liability>0.
2022-01-04 08:25:02 +08:00
Christopher Lam
c3eaff9bb2 [account.cpp] gnc_account_and_descendants_empty: don't copy children 2021-12-13 21:48:44 +08:00
Kevin M. Buckley
1e22632687 Bug 798382 - Typo corrections in comments 2021-12-12 09:50:48 -08:00