r15283 - gnucash/branches/2.0 - guile 1.8's SCM_EXACTP() throws an error when passed a non-number.

Derek Atkins warlord at cvs.gnucash.org
Sat Dec 30 14:45:38 EST 2006


Author: warlord
Date: 2006-12-30 14:45:37 -0500 (Sat, 30 Dec 2006)
New Revision: 15283
Trac: http://svn.gnucash.org/trac/changeset/15283

Modified:
   gnucash/branches/2.0/
   gnucash/branches/2.0/ChangeLog
   gnucash/branches/2.0/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.

Approved by jsled
Merge from r15252



Property changes on: gnucash/branches/2.0
___________________________________________________________________
Name: svk:merge
   - 3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/branches/2.0:697
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/branches/2.0:13800
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:13282
   + 3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/branches/2.0:697
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/branches/2.0:13801
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:13282

Modified: gnucash/branches/2.0/ChangeLog
===================================================================
--- gnucash/branches/2.0/ChangeLog	2006-12-30 19:45:19 UTC (rev 15282)
+++ gnucash/branches/2.0/ChangeLog	2006-12-30 19:45:37 UTC (rev 15283)
@@ -8,6 +8,11 @@
 	* Load and store a commodity's KVP-frame (IFF it's non-empty).
 	  This would let us store something like an Asset Class.
 
+	* 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.
+
 2006-12-30  Christian Stimming  <stimming at tuhh.de>
 
 	* Check for potentially failed utf8 conversion of locale strings.

Modified: gnucash/branches/2.0/src/engine/kvp-scm.c
===================================================================
--- gnucash/branches/2.0/src/engine/kvp-scm.c	2006-12-30 19:45:19 UTC (rev 15282)
+++ gnucash/branches/2.0/src/engine/kvp-scm.c	2006-12-30 19:45:37 UTC (rev 15283)
@@ -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