From 4251a2bdf6a87321e6ce8509ce07e18ce038df85 Mon Sep 17 00:00:00 2001 From: Linas Vepstas Date: Tue, 10 Jun 2003 03:24:03 +0000 Subject: [PATCH] fix the pricedb memory management git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@8523 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/backend/file/io-gncbin-r.c | 9 ++++----- src/backend/file/io-gncxml-v1.c | 12 ++---------- src/backend/file/io-gncxml-v2.c | 13 +------------ 3 files changed, 7 insertions(+), 27 deletions(-) diff --git a/src/backend/file/io-gncbin-r.c b/src/backend/file/io-gncbin-r.c index 158a451a76..0907f0282c 100644 --- a/src/backend/file/io-gncbin-r.c +++ b/src/backend/file/io-gncbin-r.c @@ -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; diff --git a/src/backend/file/io-gncxml-v1.c b/src/backend/file/io-gncxml-v1.c index 449abf7c6c..b7bf8c3090 100644 --- a/src/backend/file/io-gncxml-v1.c +++ b/src/backend/file/io-gncxml-v1.c @@ -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 */ diff --git a/src/backend/file/io-gncxml-v2.c b/src/backend/file/io-gncxml-v2.c index 2d71f22324..a99bcb2a39 100644 --- a/src/backend/file/io-gncxml-v2.c +++ b/src/backend/file/io-gncxml-v2.c @@ -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);