changeset 4825:208a6c04e6b8 v7.3.1159

updated for version 7.3.1159 Problem: The round() function is not always available. (Christ van Willegen) Solution: Use the solution from f_round().
author Bram Moolenaar <bram@vim.org>
date Mon, 10 Jun 2013 20:10:44 +0200
parents 95b0e2955961
children 57d727053335
files src/eval.c src/ex_cmds2.c src/proto/eval.pro src/version.c
diffstat 4 files changed, 19 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -15774,6 +15774,17 @@ theend:
 }
 
 #ifdef FEAT_FLOAT
+
+/*
+ * round() is not in C90, use ceil() or floor() instead.
+ */
+    float_T
+vim_round(f)
+    float_T f;
+{
+    return f > 0 ? floor(f + 0.5) : ceil(f - 0.5);
+}
+
 /*
  * "round({float})" function
  */
@@ -15786,8 +15797,7 @@ f_round(argvars, rettv)
 
     rettv->v_type = VAR_FLOAT;
     if (get_float_arg(argvars, &f) == OK)
-	/* round() is not in C90, use ceil() or floor() instead. */
-	rettv->vval.v_float = f > 0 ? floor(f + 0.5) : ceil(f - 0.5);
+	rettv->vval.v_float = vim_round(f);
     else
 	rettv->vval.v_float = 0.0;
 }
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -982,7 +982,7 @@ profile_divide(tm, count, tm2)
 	double usec = (tm->tv_sec * 1000000.0 + tm->tv_usec) / count;
 
 	tm2->tv_sec = floor(usec / 1000000.0);
-	tm2->tv_usec = round(usec - (tm2->tv_sec * 1000000.0));
+	tm2->tv_usec = vim_round(usec - (tm2->tv_sec * 1000000.0));
 # endif
     }
 }
--- a/src/proto/eval.pro
+++ b/src/proto/eval.pro
@@ -75,13 +75,12 @@ int dict_add_list __ARGS((dict_T *d, cha
 dictitem_T *dict_find __ARGS((dict_T *d, char_u *key, int len));
 char_u *get_dict_string __ARGS((dict_T *d, char_u *key, int save));
 long get_dict_number __ARGS((dict_T *d, char_u *key));
-void dict_extend __ARGS((dict_T *d1, dict_T *d2, char_u *action));
 char_u *get_function_name __ARGS((expand_T *xp, int idx));
 char_u *get_expr_name __ARGS((expand_T *xp, int idx));
-char_u *get_expanded_name __ARGS((char_u *name, int check));
-int translated_function_exists __ARGS((char_u *name));
 int func_call __ARGS((char_u *name, typval_T *args, dict_T *selfdict, typval_T *rettv));
+void dict_extend __ARGS((dict_T *d1, dict_T *d2, char_u *action));
 void mzscheme_call_vim __ARGS((char_u *name, typval_T *args, typval_T *rettv));
+float_T vim_round __ARGS((float_T f));
 long do_searchpair __ARGS((char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags, pos_T *match_pos, linenr_T lnum_stop, long time_limit));
 void set_vim_var_nr __ARGS((int idx, long val));
 long get_vim_var_nr __ARGS((int idx));
@@ -110,6 +109,8 @@ void ex_echohl __ARGS((exarg_T *eap));
 void ex_execute __ARGS((exarg_T *eap));
 void ex_function __ARGS((exarg_T *eap));
 void free_all_functions __ARGS((void));
+int translated_function_exists __ARGS((char_u *name));
+char_u *get_expanded_name __ARGS((char_u *name, int check));
 void func_dump_profile __ARGS((FILE *fd));
 char_u *get_user_func_name __ARGS((expand_T *xp, int idx));
 void ex_delfunction __ARGS((exarg_T *eap));
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1159,
+/**/
     1158,
 /**/
     1157,