comparison src/eval.c @ 8228:a0e552c51c34 v7.4.1407

commit https://github.com/vim/vim/commit/f1b6ac72293e658bb6e68c5cfd926c405b1b6f34 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Feb 23 21:26:43 2016 +0100 patch 7.4.1407 Problem: json_encode() does not handle NaN and inf properly. (David Barnett) Solution: For JSON turn them into "null". For JS use "NaN" and "Infinity". Add isnan().
author Christian Brabandt <cb@256bit.org>
date Tue, 23 Feb 2016 21:30:08 +0100
parents 3456e2ebebd4
children 51ca0cee512e
comparison
equal deleted inserted replaced
8227:f26bb0f9a8b9 8228:a0e552c51c34
626 static void f_inputsecret(typval_T *argvars, typval_T *rettv); 626 static void f_inputsecret(typval_T *argvars, typval_T *rettv);
627 static void f_insert(typval_T *argvars, typval_T *rettv); 627 static void f_insert(typval_T *argvars, typval_T *rettv);
628 static void f_invert(typval_T *argvars, typval_T *rettv); 628 static void f_invert(typval_T *argvars, typval_T *rettv);
629 static void f_isdirectory(typval_T *argvars, typval_T *rettv); 629 static void f_isdirectory(typval_T *argvars, typval_T *rettv);
630 static void f_islocked(typval_T *argvars, typval_T *rettv); 630 static void f_islocked(typval_T *argvars, typval_T *rettv);
631 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H)
632 static void f_isnan(typval_T *argvars, typval_T *rettv);
633 #endif
631 static void f_items(typval_T *argvars, typval_T *rettv); 634 static void f_items(typval_T *argvars, typval_T *rettv);
632 #ifdef FEAT_JOB 635 #ifdef FEAT_JOB
633 # ifdef FEAT_CHANNEL 636 # ifdef FEAT_CHANNEL
634 static void f_job_getchannel(typval_T *argvars, typval_T *rettv); 637 static void f_job_getchannel(typval_T *argvars, typval_T *rettv);
635 # endif 638 # endif
8318 {"inputsecret", 1, 2, f_inputsecret}, 8321 {"inputsecret", 1, 2, f_inputsecret},
8319 {"insert", 2, 3, f_insert}, 8322 {"insert", 2, 3, f_insert},
8320 {"invert", 1, 1, f_invert}, 8323 {"invert", 1, 1, f_invert},
8321 {"isdirectory", 1, 1, f_isdirectory}, 8324 {"isdirectory", 1, 1, f_isdirectory},
8322 {"islocked", 1, 1, f_islocked}, 8325 {"islocked", 1, 1, f_islocked},
8326 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H)
8327 {"isnan", 1, 1, f_isnan},
8328 #endif
8323 {"items", 1, 1, f_items}, 8329 {"items", 1, 1, f_items},
8324 #ifdef FEAT_JOB 8330 #ifdef FEAT_JOB
8325 # ifdef FEAT_CHANNEL 8331 # ifdef FEAT_CHANNEL
8326 {"job_getchannel", 1, 1, f_job_getchannel}, 8332 {"job_getchannel", 1, 1, f_job_getchannel},
8327 # endif 8333 # endif
14737 } 14743 }
14738 } 14744 }
14739 14745
14740 clear_lval(&lv); 14746 clear_lval(&lv);
14741 } 14747 }
14748
14749 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H)
14750 /*
14751 * "isnan()" function
14752 */
14753 static void
14754 f_isnan(typval_T *argvars, typval_T *rettv)
14755 {
14756 rettv->vval.v_number = argvars[0].v_type == VAR_FLOAT
14757 && isnan(argvars[0].vval.v_float);
14758 }
14759 #endif
14742 14760
14743 static void dict_list(typval_T *argvars, typval_T *rettv, int what); 14761 static void dict_list(typval_T *argvars, typval_T *rettv, int what);
14744 14762
14745 /* 14763 /*
14746 * Turn a dict into a list: 14764 * Turn a dict into a list: