fix the pricedb memory management

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@8523 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Linas Vepstas 2003-06-10 03:24:03 +00:00
parent 9e4383a29b
commit 4251a2bdf6
3 changed files with 7 additions and 27 deletions

View File

@ -103,13 +103,14 @@
#include "Transaction.h"
#include "TransactionP.h"
#include "TransLog.h"
#include "gnc-book.h"
#include "gnc-book-p.h"
#include "gnc-commodity.h"
#include "gnc-engine.h"
#include "gnc-engine-util.h"
#include "GNCIdP.h"
#include "gnc-pricedb.h"
#include "gnc-book-p.h"
#include "gnc-pricedb-p.h"
#define PERMS 0666
#define WFLAGS (O_WRONLY | O_CREAT | O_TRUNC)
@ -509,9 +510,7 @@ gnc_load_financials_from_fd(GNCBook *book, int fd)
GNCPriceDB *tmpdb;
if(cvt_potential_prices_to_pricedb_and_cleanup(&tmpdb, book))
{
GNCPriceDB *db = gnc_book_get_pricedb(book);
gnc_book_set_pricedb(book, tmpdb);
if(db) gnc_pricedb_destroy(db);
gnc_pricedb_set_db(book, tmpdb);
} else {
PWARN("pricedb import failed.");
error_code = ERR_BACKEND_MISC;

View File

@ -405,19 +405,11 @@ gnc_session_load_from_xml_file(GNCSession *session)
if(global_parse_status.pricedb)
{
GNCPriceDB *db = gnc_book_get_pricedb(book);
gnc_book_set_pricedb(book, global_parse_status.pricedb);
if(db) gnc_pricedb_destroy(db);
gnc_pricedb_set_db(book, global_parse_status.pricedb);
}
else
{
GNCPriceDB *db = gnc_book_get_pricedb(book);
gnc_book_set_pricedb(book, gnc_pricedb_create(book));
if(db) gnc_pricedb_destroy(db);
gnc_pricedb_set_db(book, gnc_pricedb_create(book));
}
/* Fix account and transaction commodities */

View File

@ -309,13 +309,8 @@ add_pricedb_local(sixtp_gdv2 *data, GNCPriceDB *db)
book = data->book;
if (gnc_book_get_pricedb(book))
{
gnc_pricedb_destroy(gnc_book_get_pricedb(book));
}
/* gnc_pricedb_print_contents(db, stdout); */
gnc_book_set_pricedb(book, db);
gnc_pricedb_set_db(book, db);
return TRUE;
}
@ -705,12 +700,6 @@ gnc_session_load_from_xml_file_v2(GNCSession *session)
goto bail;
}
/* If the parse succeeded, but there is no pricedb,
* then the file had no pricedb section. However,
* this routine is expected to put one in the book. */
if (!gnc_book_get_pricedb (book))
gnc_book_set_pricedb (book, gnc_pricedb_create (book));
/* Mark the book as saved */
gnc_book_mark_saved (book);