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 "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;
|
||||||
|
@ -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 */
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user