r15175 - gnucash/branches/2.0 - Fix bug #353450 - Crash on quit during save.
Derek Atkins
warlord at cvs.gnucash.org
Sat Dec 2 21:03:12 EST 2006
Author: warlord
Date: 2006-12-02 21:03:10 -0500 (Sat, 02 Dec 2006)
New Revision: 15175
Trac: http://svn.gnucash.org/trac/changeset/15175
Modified:
gnucash/branches/2.0/
gnucash/branches/2.0/ChangeLog
gnucash/branches/2.0/lib/libqof/qof/qofsession-p.h
gnucash/branches/2.0/lib/libqof/qof/qofsession.c
gnucash/branches/2.0/lib/libqof/qof/qofsession.h
gnucash/branches/2.0/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.
Merge from r15168
More information about the gnucash-patches
mailing list