[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