r16668 - gnucash/trunk/src/app-utils - Misc cleanups: always check creation_errors list, always print errors we create, some other API usage cleanup.

Josh Sled jsled at cvs.gnucash.org
Sun Dec 16 11:40:52 EST 2007


Author: jsled
Date: 2007-12-16 11:40:52 -0500 (Sun, 16 Dec 2007)
New Revision: 16668
Trac: http://svn.gnucash.org/trac/changeset/16668

Modified:
   gnucash/trunk/src/app-utils/gnc-sx-instance-model.c
Log:
Misc cleanups: always check creation_errors list, always print errors we create, some other API usage cleanup.


Modified: gnucash/trunk/src/app-utils/gnc-sx-instance-model.c
===================================================================
--- gnucash/trunk/src/app-utils/gnc-sx-instance-model.c	2007-12-16 13:42:26 UTC (rev 16667)
+++ gnucash/trunk/src/app-utils/gnc-sx-instance-model.c	2007-12-16 16:40:52 UTC (rev 16668)
@@ -916,6 +916,8 @@
         g_critical("%s", err->str);
         if (creation_errors != NULL)
             *creation_errors = g_list_append(*creation_errors, err);
+        else
+            g_string_free(err, TRUE);
         return FALSE;
     }
     acct_guid = kvp_value_get_guid( kvp_val );
@@ -932,6 +934,8 @@
         g_critical("%s", err->str);
         if (creation_errors != NULL)
             *creation_errors = g_list_append(*creation_errors, err);
+        else
+            g_string_free(err, TRUE);
         return FALSE;
     }
 
@@ -966,8 +970,11 @@
                             formula_str,
                             parseErrorLoc,
                             gnc_exp_parser_error_string());
+            g_critical("%s", err->str);
             if (creation_errors != NULL)
                 *creation_errors = g_list_append(*creation_errors, err);
+            else
+                g_string_free(err, TRUE);
         }
         
         if (parser_vars != NULL)
@@ -1052,15 +1059,15 @@
         template_split = (Split*)template_splits->data;
         copying_split = (Split*)txn_splits->data;
 
-        /* clear out any copied Split frame data. */
-        qof_instance_set_slots(QOF_INSTANCE(copying_split), kvp_frame_new());
-
         if (!_get_template_split_account(creation_data->instance, template_split, &split_acct, creation_data->creation_errors))
         {
             err_flag = TRUE;
             break;
         }
              
+        /* clear out any copied Split frame data. */
+        qof_instance_set_slots(QOF_INSTANCE(copying_split), kvp_frame_new());
+
         split_cmdty = xaccAccountGetCommodity(split_acct);
         if (first_cmdty == NULL)
         {
@@ -1068,8 +1075,7 @@
             xaccTransSetCurrency(new_txn, first_cmdty);
         }
 
-        xaccAccountBeginEdit(split_acct);
-        xaccAccountInsertSplit(split_acct, copying_split);
+        xaccSplitSetAccount(copying_split, split_acct);
 
         {
             gnc_numeric credit_num, debit_num, final;
@@ -1084,12 +1090,16 @@
             final = gnc_numeric_sub_fixed( debit_num, credit_num );
                         
             gncn_error = gnc_numeric_check(final);
-            if (gncn_error != GNC_ERROR_OK) {
+            if (gncn_error != GNC_ERROR_OK)
+            {
                 GString *err = g_string_new("");
-                g_string_printf(err, "Error %d in SX [%s] final gnc_numeric value, using 0 instead.", 
-                                gncn_error,
-                                xaccSchedXactionGetName(creation_data->instance->parent->sx));
-                *creation_data->creation_errors = g_list_append(*creation_data->creation_errors, err);
+                g_string_printf(err, "error %d in SX [%s] final gnc_numeric value, using 0 instead", 
+                                gncn_error, xaccSchedXactionGetName(creation_data->instance->parent->sx));
+                g_critical("%s", err->str);
+                if (creation_data->creation_errors != NULL)
+                    *creation_data->creation_errors = g_list_append(*creation_data->creation_errors, err);
+                else
+                    g_string_free(err, TRUE);
                 final = gnc_numeric_zero();
             }
 
@@ -1149,8 +1159,6 @@
 
             xaccSplitScrub(copying_split);
         }
-
-        xaccAccountCommitEdit(split_acct);
     }
 
     if (err_flag)



More information about the gnucash-changes mailing list