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