Fix use of guile function introduced in 2.0.10, not available in Ubuntu14.04.

Also generalize KVP type detection so that signed and unsigned values\nare appropriately converted.
This commit is contained in:
John Ralls 2017-12-22 11:07:29 -08:00
parent 6e9025d2f9
commit 19412de221

View File

@ -27,16 +27,21 @@ gnc_scm_to_kvp_value_ptr(SCM val)
{
if (scm_is_rational(val))
{
if (scm_is_exact_integer(val) &&
scm_is_signed_integer(val, INT64_MIN, INT64_MAX))
if (scm_is_exact(val) &&
(scm_is_signed_integer(val, INT64_MIN, INT64_MAX) ||
scm_is_unsigned_integer(val, INT64_MIN, INT64_MAX)))
{
return new KvpValue{scm_to_int64(val)};
}
else if (scm_is_exact(val) &&
scm_is_signed_integer(scm_numerator(val),
INT64_MIN, INT64_MAX) &&
scm_is_signed_integer(scm_denominator(val),
INT64_MIN, INT64_MAX))
(scm_is_signed_integer(scm_numerator(val),
INT64_MIN, INT64_MAX) ||
scm_is_unsigned_integer(scm_numerator(val),
INT64_MIN, INT64_MAX)) &&
(scm_is_signed_integer(scm_denominator(val),
INT64_MIN, INT64_MAX) ||
(scm_is_unsigned_integer(scm_denominator(val),
INT64_MIN, INT64_MAX))))
{
return new KvpValue{gnc_scm_to_numeric(val)};
}