r23137 - gnucash/trunk/src/engine - Protect split-iterator from NULL split

John Ralls jralls at code.gnucash.org
Fri Aug 16 12:43:58 EDT 2013


Author: jralls
Date: 2013-08-16 12:43:58 -0400 (Fri, 16 Aug 2013)
New Revision: 23137
Trac: http://svn.gnucash.org/trac/changeset/23137

Modified:
   gnucash/trunk/src/engine/Transaction.c
Log:
Protect split-iterator from NULL split

Modified: gnucash/trunk/src/engine/Transaction.c
===================================================================
--- gnucash/trunk/src/engine/Transaction.c	2013-08-16 16:43:39 UTC (rev 23136)
+++ gnucash/trunk/src/engine/Transaction.c	2013-08-16 16:43:58 UTC (rev 23137)
@@ -210,12 +210,12 @@
 gboolean
 xaccTransStillHasSplit(const Transaction *trans, const Split *s)
 {
-    return (s->parent == trans && !qof_instance_get_destroying(s));
+    return (s && s->parent == trans && !qof_instance_get_destroying(s));
 }
 
 /* Executes 'cmd_block' for each split currently in the transaction,
  * using the in-edit state.  Use the variable 's' for each split. */
-#define FOR_EACH_SPLIT(trans, cmd_block) do {                           \
+#define FOR_EACH_SPLIT(trans, cmd_block) if (trans->splits) {		\
         GList *splits;                                                  \
         for (splits = (trans)->splits; splits; splits = splits->next) { \
             Split *s = splits->data;                                    \
@@ -223,7 +223,7 @@
                 cmd_block;                                              \
             }                                                           \
         }                                                               \
-    } while (0)
+    }
 
 G_INLINE_FUNC void mark_trans (Transaction *trans);
 void mark_trans (Transaction *trans)
@@ -1371,7 +1371,7 @@
     for (node = trans->splits; node; node = node->next)
     {
         Split *s = node->data;
-        if (s->parent == trans)
+        if (s && s->parent == trans)
         {
             xaccSplitDestroy(s);
         }
@@ -1379,7 +1379,7 @@
     for (node = trans->splits; node; node = node->next)
     {
         Split *s = node->data;
-        if (s->parent == trans)
+        if (s && s->parent == trans)
         {
             xaccSplitCommitEdit(s);
         }



More information about the gnucash-changes mailing list