r15168 - gnucash/trunk - Fix bug #353450 - Crash on quit during save.

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

r15168 - gnucash/trunk - Fix bug #353450 - Crash on quit during save.

Chris Shoemaker-2
Author: chris
Date: 2006-12-02 17:13:13 -0500 (Sat, 02 Dec 2006)
New Revision: 15168
Trac: http://svn.gnucash.org/trac/changeset/15168

Modified:
   gnucash/trunk/lib/libqof/qof/qofsession-p.h
   gnucash/trunk/lib/libqof/qof/qofsession.c
   gnucash/trunk/lib/libqof/qof/qofsession.h
   gnucash/trunk/src/gnome-utils/gnc-file.c
Log:
Fix bug #353450 - Crash on quit during save.

Add a lock to the QofSession object, and use it in qof_session_save() to
protect against re-entrance.

The lock always starts at 1 and is 0 while inside qof_session_save().  
If another call is made to qof_session_save() while one is in progress,
the lock will momentarily drop below 0 before returning to zero.

Note: The per-session nature of the lock would make it appear that we support
concurrent saving of different sessions.  In fact, we do not, because the
file backend blocks the main process until the forked gzip process is
finished, and it only knows how to keep track of one child pid at a time.



_______________________________________________
gnucash-patches mailing list
[hidden email]
https://lists.gnucash.org/mailman/listinfo/gnucash-patches