mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
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:
parent
9e4383a29b
commit
4251a2bdf6
@ -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;
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user