diff --git a/src/jv.c b/src/jv.c index b77e2d2ddd..548e7de922 100644 --- a/src/jv.c +++ b/src/jv.c @@ -206,9 +206,6 @@ enum { JVP_NUMBER_DECIMAL = 1 }; -#define JV_NUMBER_SIZE_INIT (0) -#define JV_NUMBER_SIZE_CONVERTED (1) - #define JVP_FLAGS_NUMBER_NATIVE JVP_MAKE_FLAGS(JV_KIND_NUMBER, JVP_MAKE_PFLAGS(JVP_NUMBER_NATIVE, 0)) #define JVP_FLAGS_NUMBER_LITERAL JVP_MAKE_FLAGS(JV_KIND_NUMBER, JVP_MAKE_PFLAGS(JVP_NUMBER_DECIMAL, 1)) @@ -590,7 +587,7 @@ static jv jvp_literal_number_new(const char * literal) { return JV_INVALID; } - jv r = {JVP_FLAGS_NUMBER_LITERAL, 0, 0, JV_NUMBER_SIZE_INIT, {&n->refcnt}}; + jv r = {JVP_FLAGS_NUMBER_LITERAL, 0, 0, 0, {&n->refcnt}}; return r; } @@ -698,9 +695,8 @@ double jv_number_value(jv j) { if (JVP_HAS_FLAGS(j, JVP_FLAGS_NUMBER_LITERAL)) { jvp_literal_number* n = jvp_literal_number_ptr(j); - if (j.size != JV_NUMBER_SIZE_CONVERTED) { + if (isnan(n->num_double)) { n->num_double = jvp_literal_number_to_double(j); - j.size = JV_NUMBER_SIZE_CONVERTED; } return n->num_double; @@ -731,7 +727,7 @@ int jvp_number_is_nan(jv n) { return decNumberIsNaN(pdec); } #endif - return n.u.number != n.u.number; + return isnan(n.u.number); } int jvp_number_cmp(jv a, jv b) {