[Gnucash-changes] r13926 - gnucash/trunk - Add an alternate mode for handling the dirty state of instances and

Chris Shoemaker c.shoemaker at cox.net
Sun May 7 22:07:48 EDT 2006


On Sat, May 06, 2006 at 02:01:16AM -0400, David Hampton wrote:
> Modified: gnucash/trunk/lib/libqof/qof/qofutil.c
> ===================================================================
> --- gnucash/trunk/lib/libqof/qof/qofutil.c	2006-05-06 01:27:40 UTC (rev 13925)
> +++ gnucash/trunk/lib/libqof/qof/qofutil.c	2006-05-06 06:01:14 UTC (rev 13926)
> @@ -269,6 +269,7 @@
>                        void (*on_free)(QofInstance *)) 
>  {
>      QofBackend * be;
> +    gboolean dirty = inst->dirty;
>  
>      /* See if there's a backend.  If there is, invoke it. */
>      be = qof_book_get_backend(inst->book);
> @@ -300,6 +301,9 @@
>              on_free(inst);
>          return TRUE;
>      }
> +
> +    if (dirty && qof_get_alt_dirty_mode())
> +      qof_collection_mark_dirty(inst->entity.collection);
>      if (on_done)
>          on_done(inst);
>      return TRUE;

Why is this after the "on_free" case?  Deleting an object will result
in calling qof_commit_edit_part2() with do_free set, so this
qof_collection_mark_dirty() will never be reached.

So, if the collection isn't marked dirty on committing a deleted
object, and if the freeing functions, which call
qof_instance_release(), which calls qof_entity_release(), which calls
qof_collection_remove() also no longer dirties the collections, then I
don't see how the book would be dirtied when an object is deleted.

Somehow, sometime, deleting an object needs to result in a dirty book,
even though it contain collections of only clean instances (entities).

-chris


More information about the gnucash-devel mailing list