r16186 - gnucash/trunk/src - Fix freq=None recurrnence + file-restore.
Josh Sled
jsled at cvs.gnucash.org
Mon Jun 18 23:02:38 EDT 2007
Author: jsled
Date: 2007-06-18 23:02:36 -0400 (Mon, 18 Jun 2007)
New Revision: 16186
Trac: http://svn.gnucash.org/trac/changeset/16186
Modified:
gnucash/trunk/src/backend/file/gnc-schedxaction-xml-v2.c
gnucash/trunk/src/doc/sx.rst
gnucash/trunk/src/engine/Recurrence.c
gnucash/trunk/src/engine/SchedXaction.c
Log:
Fix freq=None recurrnence + file-restore.
Modified: gnucash/trunk/src/backend/file/gnc-schedxaction-xml-v2.c
===================================================================
--- gnucash/trunk/src/backend/file/gnc-schedxaction-xml-v2.c 2007-06-19 01:49:22 UTC (rev 16185)
+++ gnucash/trunk/src/backend/file/gnc-schedxaction-xml-v2.c 2007-06-19 03:02:36 UTC (rev 16186)
@@ -529,7 +529,7 @@
if (!dom_tree_generic_parse(node, sx_recurrence_list_handlers, &schedule))
return FALSE;
- g_return_val_if_fail(schedule, FALSE);
+ // g_return_val_if_fail(schedule, FALSE);
g_debug("setting freshly-parsed schedule: [%s]", recurrenceListToString(schedule));
gnc_sx_set_schedule(parsing_data->sx, schedule);
parsing_data->saw_recurrence = TRUE;
Modified: gnucash/trunk/src/doc/sx.rst
===================================================================
--- gnucash/trunk/src/doc/sx.rst 2007-06-19 01:49:22 UTC (rev 16185)
+++ gnucash/trunk/src/doc/sx.rst 2007-06-19 03:02:36 UTC (rev 16186)
@@ -166,11 +166,6 @@
- [x] src/gnome/druid-acct-period.c
- gnc_frequency
- - [ ] Freq=none doesn't work::
-
- * 17:00:29 CRIT <gnc.engine.recurrence> recurrenceListNextInstance: assertion `rlist && ref && next && g_date_valid(ref)' failed
- * 17:00:36 CRIT <gnc.engine.sx> gnc_sx_set_schedule: assertion `sx && schedule' failed
-
- [ ] 'every x months' spin button makes large jumps::
<andi5> jsled: another topic: you have probably seen the "every x months"
@@ -179,7 +174,11 @@
spinning... it is run because the changed(?) signal handler is too slow
- [ ] support nth-weekday Recurrence period.
+ - [x] Freq=none doesn't work::
+ * 17:00:29 CRIT <gnc.engine.recurrence> recurrenceListNextInstance: assertion `rlist && ref && next && g_date_valid(ref)' failed
+ * 17:00:36 CRIT <gnc.engine.sx> gnc_sx_set_schedule: assertion `sx && schedule' failed
+
- since-last-run
- [ ] "reminder" instances should show number of days until due
- [ ] "Find unfinished" button; count; sensitize Ok as function of unfinished.
Modified: gnucash/trunk/src/engine/Recurrence.c
===================================================================
--- gnucash/trunk/src/engine/Recurrence.c 2007-06-19 01:49:22 UTC (rev 16185)
+++ gnucash/trunk/src/engine/Recurrence.c 2007-06-19 03:02:36 UTC (rev 16186)
@@ -267,9 +267,15 @@
const GList *iter;
GDate nextSingle; /* The next date for an individual recurrence */
- g_return_if_fail(rlist && ref && next && g_date_valid(ref));
+ g_date_clear(next, 1);
- g_date_clear(next, 1);
+ // empty rlist = no recurrence
+ if (rlist == NULL) {
+ return;
+ }
+
+ g_return_if_fail(ref && next && g_date_valid(ref));
+
for (iter = rlist; iter; iter = iter->next) {
const Recurrence *r = iter->data;
@@ -318,15 +324,18 @@
const GList *iter;
GString *str;
gchar *s;
- g_return_val_if_fail(r, NULL);
str = g_string_new("");
- for(iter = r; iter; iter = iter->next){
- if (iter != r)
- g_string_append(str, " + ");
- s = recurrenceToString((Recurrence *)iter->data);
- g_string_append(str, s);
- g_free(s);
+ if (r == NULL) {
+ g_string_append(str, "None");
+ } else {
+ for(iter = r; iter; iter = iter->next){
+ if (iter != r)
+ g_string_append(str, " + ");
+ s = recurrenceToString((Recurrence *)iter->data);
+ g_string_append(str, s);
+ g_free(s);
+ }
}
return g_string_free(str, FALSE);
}
Modified: gnucash/trunk/src/engine/SchedXaction.c
===================================================================
--- gnucash/trunk/src/engine/SchedXaction.c 2007-06-19 01:49:22 UTC (rev 16185)
+++ gnucash/trunk/src/engine/SchedXaction.c 2007-06-19 03:02:36 UTC (rev 16186)
@@ -266,7 +266,7 @@
void
gnc_sx_set_schedule(SchedXaction *sx, GList *schedule)
{
- g_return_if_fail(sx && schedule);
+ g_return_if_fail(sx);
gnc_sx_begin_edit(sx);
sx->schedule = schedule;
qof_instance_set_dirty(&sx->inst);
More information about the gnucash-changes
mailing list