AUDIT: r15252 - gnucash/trunk - guile 1.8's SCM_EXACTP() throws an error when passed a non-number.

Derek Atkins warlord at cvs.gnucash.org
Sat Dec 23 16:10:48 EST 2006


Author: warlord
Date: 2006-12-23 16:10:47 -0500 (Sat, 23 Dec 2006)
New Revision: 15252
Trac: http://svn.gnucash.org/trac/changeset/15252

Modified:
   gnucash/trunk/
   gnucash/trunk/src/engine/kvp-scm.c
Log:
guile 1.8's SCM_EXACTP() throws an error when passed a non-number.
So make sure we test SCM_NUMBERP() before SCM_EXACTP()
This causes gnucash to crash on e.g. FC6 from the File Properties Menu.
BP



Property changes on: gnucash/trunk
___________________________________________________________________
Name: svk:merge
   - 3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/branches/swig-redo:802
3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/trunk:1024
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:13714
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk2:13366
   + 3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/branches/swig-redo:802
3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/trunk:1024
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:13759
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk2:13366

Modified: gnucash/trunk/src/engine/kvp-scm.c
===================================================================
--- gnucash/trunk/src/engine/kvp-scm.c	2006-12-23 18:50:20 UTC (rev 15251)
+++ gnucash/trunk/src/engine/kvp-scm.c	2006-12-23 21:10:47 UTC (rev 15252)
@@ -23,14 +23,18 @@
 KvpValue *
 gnc_scm_to_kvp_value_ptr(SCM val)
 {
-    if(SCM_EXACTP (val) && gnc_gh_gint64_p(val))
+    if(SCM_NUMBERP(val))
     {
-        return kvp_value_new_gint64(gnc_scm_to_gint64(val));
+        /* in guile 1.8 (exact? ) only works on numbers */
+        if(SCM_EXACTP (val) && gnc_gh_gint64_p(val))
+        {
+            return kvp_value_new_gint64(gnc_scm_to_gint64(val));
+        }
+        else 
+        {
+            return kvp_value_new_double(scm_num2dbl(val, __FUNCTION__));
+        }
     }
-    else if(SCM_NUMBERP(val))
-    {
-        return kvp_value_new_double(scm_num2dbl(val, __FUNCTION__));
-    }
     else if(gnc_numeric_p(val))
     {
         return kvp_value_new_gnc_numeric(gnc_scm_to_numeric(val));



More information about the gnucash-changes mailing list