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