[Gnucash-changes] Fixing references and empty partial books
Neil Williams
codehelp at cvs.gnucash.org
Mon Mar 7 16:56:45 EST 2005
Log Message:
-----------
Fixing references and empty partial books
Tags:
----
gnucash-gnome2-dev
Modified Files:
--------------
gnucash:
ChangeLog
gnucash/src/engine:
qofsession.c
Revision Data
-------------
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1487.2.181
retrieving revision 1.1487.2.182
diff -LChangeLog -LChangeLog -u -r1.1487.2.181 -r1.1487.2.182
--- ChangeLog
+++ ChangeLog
@@ -1,3 +1,7 @@
+2005-03-07 Neil Williams <linux at codehelp.co.uk>
+ * ./src/engine/qofsession.c:Fixing references
+ and empty partial books
+
2005-03-07 Neil Williams <linux at codehelp.co.uk>
* ./HACKING: Add a tip for using gdb with opt
style builds.
Index: qofsession.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/qofsession.c,v
retrieving revision 1.2.4.10
retrieving revision 1.2.4.11
diff -Lsrc/engine/qofsession.c -Lsrc/engine/qofsession.c -u -r1.2.4.10 -r1.2.4.11
--- src/engine/qofsession.c
+++ src/engine/qofsession.c
@@ -449,6 +449,7 @@
if(registered_type == FALSE) {
referenceEnt = NULL;
referenceEnt = cm_param->param_getfcn(importEnt, cm_param);
+ if(!referenceEnt) { return; }
reference = g_new(QofEntityReference, 1);
reference->type = g_strdup(referenceEnt->e_type);
reference->guid = g_new(GUID, 1);
@@ -505,8 +506,6 @@
if(qecd->param_list != NULL) { g_slist_free(qecd->param_list); }
qof_class_param_foreach(original->e_type, qof_entity_param_cb, qecd);
g_slist_foreach(qecd->param_list, qof_entity_foreach_copy, qecd);
- qof_book_set_data(book, ENTITYREFERENCE, qecd->referenceTable);
- qof_book_set_data(book, PARTIAL_QOFBOOK, (gboolean*)TRUE);
}
static void
@@ -546,8 +545,6 @@
if(qecd->param_list != NULL) { g_slist_free(qecd->param_list); }
qof_class_param_foreach(original->e_type, qof_entity_param_cb, qecd);
g_slist_foreach(qecd->param_list, qof_entity_foreach_copy, qecd);
- qof_book_set_data(book, ENTITYREFERENCE, qecd->referenceTable);
- qof_book_set_data(book, PARTIAL_QOFBOOK, (gboolean*)TRUE);
}
gboolean qof_entity_copy_to_session(QofSession* new_session, QofEntity* original)
@@ -570,9 +567,9 @@
qof_entity_set_guid(qecd.to, g);
qof_class_param_foreach(original->e_type, qof_entity_param_cb, &qecd);
g_slist_foreach(qecd.param_list, qof_entity_foreach_copy, &qecd);
+ g_slist_free(qecd.param_list);
qof_book_set_data(book, ENTITYREFERENCE, qecd.referenceTable);
qof_book_set_data(book, PARTIAL_QOFBOOK, (gboolean*)TRUE);
- g_slist_free(qecd.param_list);
return TRUE;
}
@@ -581,6 +578,7 @@
GList *e;
QofEntity *original;
QofEntityCopyData qecd;
+ QofBook *book;
qecd.param_list = NULL;
qecd.new_session = new_session;
@@ -595,12 +593,16 @@
if(qof_entity_guid_match(new_session, original)) return FALSE;
}
g_list_foreach(entity_list, qof_entity_list_foreach, &qecd);
+ book = qof_session_get_book(qecd.new_session);
+ qof_book_set_data(book, ENTITYREFERENCE, qecd.referenceTable);
+ qof_book_set_data(book, PARTIAL_QOFBOOK, (gboolean*)TRUE);
return TRUE;
}
gboolean qof_entity_copy_coll(QofSession *new_session, QofCollection *entity_coll)
{
QofEntityCopyData qecd;
+ QofBook *book;
qecd.param_list = NULL;
qecd.new_session = new_session;
@@ -609,6 +611,9 @@
qof_collection_foreach(entity_coll, qof_entity_coll_foreach, &qecd);
if(qecd.error == TRUE) return FALSE;
qof_collection_foreach(entity_coll, qof_entity_coll_copy, &qecd);
+ book = qof_session_get_book(qecd.new_session);
+ qof_book_set_data(book, ENTITYREFERENCE, qecd.referenceTable);
+ qof_book_set_data(book, PARTIAL_QOFBOOK, (gboolean*)TRUE);
if(qecd.param_list != NULL) { g_slist_free(qecd.param_list); }
return TRUE;
}
More information about the gnucash-changes
mailing list