Transaction API question
Alan Jenkins
sourcejedi.lkml at googlemail.com
Tue Feb 10 05:02:31 EST 2009
On 2/10/09, Charles Day <cedayiv at gmail.com> wrote:
> On Thu, Jan 29, 2009 at 10:28 AM, Charles Day <cedayiv at gmail.com> wrote:
>
>> I have a question about how to destroy a transaction properly. Suppose I
>> do
>> the following to create a new transaction with one split.
>>
>> new_trans = xaccMallocTransaction (gnc_get_current_book ());
>> xaccTransBeginEdit (new_trans);
>> xaccTransSetCurrency (new_trans,
>> currency ? currency : gnc_default_currency());
>> xaccTransSetDateSecs (new_trans, info->last_date_entered);
>> blank_split = xaccMallocSplit (gnc_get_current_book ());
>> xaccSplitSetParent(blank_split, new_trans);
>>
>> I haven't committed yet. Now what if I decide that I don't want this
>> transaction or split any more? Will xaccTransRollbackEdit() get that done?
>> If not, what is the correct way?
>>
>> I ask because the register tries to do it with xaccTransDestroy(), but
>> since the transaction is still open, that doesn't actually work.
>>
>
> Sorry to bump this, but does anyone know the answer? It would help fix bug
> 346159.
Interesting. The generic import layer does this:
xaccTransDestroy(trans);
xaccTransCommitEdit(trans);
to destroy an open transaction in gnc_import_exists_online_id(). It
seems to work :-). Maybe the register code is missing the commit.
Alan
More information about the gnucash-devel
mailing list