On Mon, Mar 06, 2006 at 02:33:13PM -0500, David Hampton wrote: > On Mon, 2006-03-06 at 09:09 -0500, Derek Atkins wrote: > > David, > > > > David Hampton <[EMAIL PROTECTED]> writes: > > > > > + ed.node = acc; > > > + ed.idx = 0; > > > + qof_event_gen(&acc->inst.entity, QOF_EVENT_MODIFY, &ed); > > > + > > > if (qof_commit_edit_part2(&acc->inst, on_err, noop, acc_free)) > > > gnc_engine_gen_event (&acc->inst.entity, GNC_EVENT_MODIFY); > > > } <snip> > The qof_event_gen call should probably be moved inside of the 'if' > statement, but I was getting persistent crashes when it was in that > location. When xaccAccountCommitEdit is called at the end of account > destruction, the commit_edit_part2 call frees the allocated data > structure and then the old callback functions is invoked. I am unclear > why the exiting event generation hook ever worked in this position since > it can be called on a freed data structure. I didn't have time to > analyze the problem further, thus the current location of the call to > qof_event_gen.
Um, that's certainly a thinko on my part. The event generation should be done from inside the on_done callback, (the one which is currently called 'noop'). The 'on_free' call back already results in generating GNC_EVENT_DESTROY. And 'on_err' should rollback, but that's unimplemented. I'll fix that right away. -chris _______________________________________________ gnucash-devel mailing list [email protected] https://lists.gnucash.org/mailman/listinfo/gnucash-devel
