use isfinite() or finite() depending on availability
diff --git a/skeletons/REAL.c b/skeletons/REAL.c
index 4db0a46..1b8e30c 100644
--- a/skeletons/REAL.c
+++ b/skeletons/REAL.c
@@ -27,6 +27,12 @@
#define INFINITY (1.0/real_zero)
#endif
+#ifdef isfinite
+#define _asn_isfinite(d) isfinite(d) /* ISO C99 */
+#else
+#define _asn_isfinite(d) finite(d) /* Deprecated on Mac OS X 10.9 */
+#endif
+
/*
* REAL basic type description.
*/
@@ -88,7 +94,7 @@
buf = specialRealValue[SRV__NOT_A_NUMBER].string;
buflen = specialRealValue[SRV__NOT_A_NUMBER].length;
return (cb(buf, buflen, app_key) < 0) ? -1 : buflen;
- } else if(!finite(d)) {
+ } else if(!_asn_isfinite(d)) {
if(copysign(1.0, d) < 0.0) {
buf = specialRealValue[SRV__MINUS_INFINITY].string;
buflen = specialRealValue[SRV__MINUS_INFINITY].length;
@@ -458,7 +464,7 @@
return -1;
}
if(used_malloc) FREEMEM(buf);
- if(finite(d)) {
+ if(_asn_isfinite(d)) {
*dbl_value = d;
return 0;
} else {
@@ -538,7 +544,7 @@
m = ldexp(m, scaleF) * pow(pow(2, base), expval);
*/
m = ldexp(m, expval * baseF + scaleF);
- if(finite(m)) {
+ if(_asn_isfinite(m)) {
*dbl_value = sign ? -m : m;
} else {
errno = ERANGE;
@@ -599,7 +605,7 @@
st->buf[0] = 0x42; /* NaN */
st->buf[1] = 0;
st->size = 1;
- } else if(!finite(dbl_value)) {
+ } else if(!_asn_isfinite(dbl_value)) {
if(copysign(1.0, dbl_value) < 0.0) {
st->buf[0] = 0x41; /* MINUS-INFINITY */
} else {