# HG changeset patch # User Christian Brabandt # Date 1456262105 -3600 # Node ID 51ca0cee512ea1488c1680818b3d45ba0d9a05fe # Parent 8ac9d0ab3ef8e2b11dff30e3568c8c89bacad2d5 commit https://github.com/vim/vim/commit/3ea0f1ae318db6cd9413914bb2ff824d71cefc6e Author: Bram Moolenaar Date: Tue Feb 23 22:07:32 2016 +0100 patch 7.4.1408 Problem: MS-Windows doesn't have isnan() and isinf(). Solution: Use _isnan() and _isinf(). diff --git a/src/eval.c b/src/eval.c --- a/src/eval.c +++ b/src/eval.c @@ -27,8 +27,14 @@ # include /* for time_t */ #endif -#if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) -# include +#if defined(FEAT_FLOAT) +# include +# if defined(HAVE_MATH_H) +# include +# endif +# if defined(WIN32) && !defined(isnan) +# define isnan(x) _isnan(x) +# endif #endif #define DICT_MAXNEST 100 /* maximum nesting of lists and dicts */ diff --git a/src/json.c b/src/json.c --- a/src/json.c +++ b/src/json.c @@ -17,9 +17,20 @@ #if defined(FEAT_EVAL) || defined(PROTO) -#if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) - /* for isnan() and isinf() */ -# include +#if defined(FEAT_FLOAT) +# include +# if defined(HAVE_MATH_H) + /* for isnan() and isinf() */ +# include +# endif +# if defined(WIN32) && !defined(isnan) +# define isnan(x) _isnan(x) +# define isinf(x) (!_finite(x) && !_isnan(x)) +# endif +# if defined(_MSC_VER) && !defined(INFINITY) +# define INFINITY (DBL_MAX+DBL_MAX) +# define NAN (INFINITY-INFINITY) +# endif #endif static int json_encode_item(garray_T *gap, typval_T *val, int copyID, int options); @@ -745,7 +756,7 @@ json_decode_item(js_read_T *reader, typv if (res != NULL) { res->v_type = VAR_FLOAT; - res->vval.v_float = 0.0 / 0.0; + res->vval.v_float = NAN; } return OK; } @@ -755,7 +766,7 @@ json_decode_item(js_read_T *reader, typv if (res != NULL) { res->v_type = VAR_FLOAT; - res->vval.v_float = 1.0 / 0.0; + res->vval.v_float = INFINITY; } return OK; } diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -749,6 +749,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1408, +/**/ 1407, /**/ 1406,