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

View File

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

View File

@ -309,13 +309,8 @@ add_pricedb_local(sixtp_gdv2 *data, GNCPriceDB *db)
book = data->book; book = data->book;
if (gnc_book_get_pricedb(book))
{
gnc_pricedb_destroy(gnc_book_get_pricedb(book));
}
/* gnc_pricedb_print_contents(db, stdout); */ /* gnc_pricedb_print_contents(db, stdout); */
gnc_book_set_pricedb(book, db); gnc_pricedb_set_db(book, db);
return TRUE; return TRUE;
} }
@ -705,12 +700,6 @@ gnc_session_load_from_xml_file_v2(GNCSession *session)
goto bail; 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 */ /* Mark the book as saved */
gnc_book_mark_saved (book); gnc_book_mark_saved (book);