To: vim_dev@googlegroups.com Subject: Patch 8.1.0615 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.1.0615 Problem: Get_tv function names are not consistent. Solution: Rename to tv_get. Files: src/eval.c, src/proto/eval.pro, src/channel.c, src/dict.c, src/evalfunc.c, src/list.c, src/message.c, src/tag.c, src/terminal.c, src/textprop.c, src/window.c, src/ex_cmds.c, src/os_unix.c, src/os_win32.c, src/json.c, src/regexp.c, src/edit.c, src/misc2.c, src/popupmnu.c *** ../vim-8.1.0614/src/eval.c 2018-12-14 15:38:28.327597664 +0100 --- src/eval.c 2018-12-21 15:59:46.202241682 +0100 *************** *** 681,687 **** *error = FALSE; if (!skip) { ! retval = (get_tv_number_chk(&tv, error) != 0); clear_tv(&tv); } } --- 681,687 ---- *error = FALSE; if (!skip) { ! retval = (tv_get_number_chk(&tv, error) != 0); clear_tv(&tv); } } *************** *** 720,726 **** } else { ! s = get_tv_string_buf_chk(expr, buf); if (s == NULL) return FAIL; s = skipwhite(s); --- 720,726 ---- } else { ! s = tv_get_string_buf_chk(expr, buf); if (s == NULL) return FAIL; s = skipwhite(s); *************** *** 751,757 **** *error = TRUE; return FALSE; } ! res = (get_tv_number_chk(&rettv, error) != 0); clear_tv(&rettv); return res; } --- 751,757 ---- *error = TRUE; return FALSE; } ! res = (tv_get_number_chk(&rettv, error) != 0); clear_tv(&rettv); return res; } *************** *** 776,782 **** retval = NULL; else { ! retval = vim_strsave(get_tv_string(&tv)); clear_tv(&tv); } if (skip) --- 776,782 ---- retval = NULL; else { ! retval = vim_strsave(tv_get_string(&tv)); clear_tv(&tv); } if (skip) *************** *** 841,847 **** } #endif else ! retval = vim_strsave(get_tv_string(&tv)); clear_tv(&tv); } --- 841,847 ---- } #endif else ! retval = vim_strsave(tv_get_string(&tv)); clear_tv(&tv); } *************** *** 891,897 **** retval = -1; else { ! retval = get_tv_number_chk(&rettv, NULL); clear_tv(&rettv); } --emsg_off; --- 891,897 ---- retval = -1; else { ! retval = tv_get_number_chk(&rettv, NULL); clear_tv(&rettv); } --emsg_off; *************** *** 982,993 **** li = list->lv_first; if (li == NULL) return -1; ! *pp = get_tv_string(&li->li_tv); li = li->li_next; if (li == NULL) return -1; ! return (int)get_tv_number(&li->li_tv); } #endif --- 982,993 ---- li = list->lv_first; if (li == NULL) return -1; ! *pp = tv_get_string(&li->li_tv); li = li->li_next; if (li == NULL) return -1; ! return (int)tv_get_number(&li->li_tv); } #endif *************** *** 1053,1059 **** if (call_vim_function(func, argc, argv, &rettv) == FAIL) return -1; ! retval = get_tv_number_chk(&rettv, NULL); clear_tv(&rettv); return retval; } --- 1053,1059 ---- if (call_vim_function(func, argc, argv, &rettv) == FAIL) return -1; ! retval = tv_get_number_chk(&rettv, NULL); clear_tv(&rettv); return retval; } *************** *** 1080,1086 **** if (call_vim_function(func, argc, argv, &rettv) == FAIL) return NULL; ! retval = vim_strsave(get_tv_string(&rettv)); clear_tv(&rettv); return retval; } --- 1080,1086 ---- if (call_vim_function(func, argc, argv, &rettv) == FAIL) return NULL; ! retval = vim_strsave(tv_get_string(&rettv)); clear_tv(&rettv); return retval; } *************** *** 1654,1660 **** { c1 = name[len]; name[len] = NUL; ! p = get_tv_string_chk(tv); if (p != NULL && op != NULL && *op == '.') { int mustfree = FALSE; --- 1654,1660 ---- { c1 = name[len]; name[len] = NUL; ! p = tv_get_string_chk(tv); if (p != NULL && op != NULL && *op == '.') { int mustfree = FALSE; *************** *** 1708,1715 **** c1 = *p; *p = NUL; ! n = (long)get_tv_number(tv); ! s = get_tv_string_chk(tv); /* != NULL if number or string */ if (s != NULL && op != NULL && *op != '=') { opt_type = get_option_value(arg, &numval, --- 1708,1715 ---- c1 = *p; *p = NUL; ! n = (long)tv_get_number(tv); ! s = tv_get_string_chk(tv); /* != NULL if number or string */ if (s != NULL && op != NULL && *op != '=') { opt_type = get_option_value(arg, &numval, *************** *** 1763,1769 **** char_u *ptofree = NULL; char_u *s; ! p = get_tv_string_chk(tv); if (p != NULL && op != NULL && *op == '.') { s = get_reg_contents(*arg == '@' ? '"' : *arg, GREG_EXPR_SRC); --- 1763,1769 ---- char_u *ptofree = NULL; char_u *s; ! p = tv_get_string_chk(tv); if (p != NULL && op != NULL && *op == '.') { s = get_reg_contents(*arg == '@' ? '"' : *arg, GREG_EXPR_SRC); *************** *** 1956,1962 **** empty1 = FALSE; if (eval1(&p, &var1, TRUE) == FAIL) /* recursive! */ return NULL; ! if (get_tv_string_chk(&var1) == NULL) { /* not a number or string */ clear_tv(&var1); --- 1956,1962 ---- empty1 = FALSE; if (eval1(&p, &var1, TRUE) == FAIL) /* recursive! */ return NULL; ! if (tv_get_string_chk(&var1) == NULL) { /* not a number or string */ clear_tv(&var1); *************** *** 1993,1999 **** clear_tv(&var1); return NULL; } ! if (get_tv_string_chk(&var2) == NULL) { /* not a number or string */ clear_tv(&var1); --- 1993,1999 ---- clear_tv(&var1); return NULL; } ! if (tv_get_string_chk(&var2) == NULL) { /* not a number or string */ clear_tv(&var1); *************** *** 2024,2030 **** if (len == -1) { /* "[key]": get key from "var1" */ ! key = get_tv_string_chk(&var1); /* is number or string */ if (key == NULL) { clear_tv(&var1); --- 2024,2030 ---- if (len == -1) { /* "[key]": get key from "var1" */ ! key = tv_get_string_chk(&var1); /* is number or string */ if (key == NULL) { clear_tv(&var1); *************** *** 2106,2112 **** lp->ll_n1 = 0; else /* is number or string */ ! lp->ll_n1 = (long)get_tv_number(&var1); clear_tv(&var1); lp->ll_dict = NULL; --- 2106,2112 ---- lp->ll_n1 = 0; else /* is number or string */ ! lp->ll_n1 = (long)tv_get_number(&var1); clear_tv(&var1); lp->ll_dict = NULL; *************** *** 2136,2142 **** */ if (lp->ll_range && !lp->ll_empty2) { ! lp->ll_n2 = (long)get_tv_number(&var2); /* is number or string */ clear_tv(&var2); if (lp->ll_n2 < 0) --- 2136,2142 ---- */ if (lp->ll_range && !lp->ll_empty2) { ! lp->ll_n2 = (long)tv_get_number(&var2); /* is number or string */ clear_tv(&var2); if (lp->ll_n2 < 0) *************** *** 2367,2373 **** if (*op == '+' || *op == '-') { /* nr += nr or nr -= nr*/ ! n = get_tv_number(tv1); #ifdef FEAT_FLOAT if (tv2->v_type == VAR_FLOAT) { --- 2367,2373 ---- if (*op == '+' || *op == '-') { /* nr += nr or nr -= nr*/ ! n = tv_get_number(tv1); #ifdef FEAT_FLOAT if (tv2->v_type == VAR_FLOAT) { *************** *** 2385,2393 **** #endif { if (*op == '+') ! n += get_tv_number(tv2); else ! n -= get_tv_number(tv2); clear_tv(tv1); tv1->v_type = VAR_NUMBER; tv1->vval.v_number = n; --- 2385,2393 ---- #endif { if (*op == '+') ! n += tv_get_number(tv2); else ! n -= tv_get_number(tv2); clear_tv(tv1); tv1->v_type = VAR_NUMBER; tv1->vval.v_number = n; *************** *** 2399,2406 **** break; /* str .= str */ ! s = get_tv_string(tv1); ! s = concat_str(s, get_tv_string_buf(tv2, numbuf)); clear_tv(tv1); tv1->v_type = VAR_STRING; tv1->vval.v_string = s; --- 2399,2406 ---- break; /* str .= str */ ! s = tv_get_string(tv1); ! s = concat_str(s, tv_get_string_buf(tv2, numbuf)); clear_tv(tv1); tv1->v_type = VAR_STRING; tv1->vval.v_string = s; *************** *** 2419,2425 **** if (tv2->v_type == VAR_FLOAT) f = tv2->vval.v_float; else ! f = get_tv_number(tv2); if (*op == '+') tv1->vval.v_float += f; else --- 2419,2425 ---- if (tv2->v_type == VAR_FLOAT) f = tv2->vval.v_float; else ! f = tv_get_number(tv2); if (*op == '+') tv1->vval.v_float += f; else *************** *** 3271,3277 **** { int error = FALSE; ! if (get_tv_number_chk(rettv, &error) != 0) result = TRUE; clear_tv(rettv); if (error) --- 3271,3277 ---- { int error = FALSE; ! if (tv_get_number_chk(rettv, &error) != 0) result = TRUE; clear_tv(rettv); if (error) *************** *** 3345,3351 **** { if (evaluate && first) { ! if (get_tv_number_chk(rettv, &error) != 0) result = TRUE; clear_tv(rettv); if (error) --- 3345,3351 ---- { if (evaluate && first) { ! if (tv_get_number_chk(rettv, &error) != 0) result = TRUE; clear_tv(rettv); if (error) *************** *** 3365,3371 **** */ if (evaluate && !result) { ! if (get_tv_number_chk(&var2, &error) != 0) result = TRUE; clear_tv(&var2); if (error) --- 3365,3371 ---- */ if (evaluate && !result) { ! if (tv_get_number_chk(&var2, &error) != 0) result = TRUE; clear_tv(&var2); if (error) *************** *** 3413,3419 **** { if (evaluate && first) { ! if (get_tv_number_chk(rettv, &error) == 0) result = FALSE; clear_tv(rettv); if (error) --- 3413,3419 ---- { if (evaluate && first) { ! if (tv_get_number_chk(rettv, &error) == 0) result = FALSE; clear_tv(rettv); if (error) *************** *** 3433,3439 **** */ if (evaluate && result) { ! if (get_tv_number_chk(&var2, &error) == 0) result = FALSE; clear_tv(&var2); if (error) --- 3433,3439 ---- */ if (evaluate && result) { ! if (tv_get_number_chk(&var2, &error) == 0) result = FALSE; clear_tv(&var2); if (error) *************** *** 3622,3628 **** * we know that the first operand needs to be a string or number * without evaluating the 2nd operand. So check before to avoid * side effects after an error. */ ! if (evaluate && get_tv_string_chk(rettv) == NULL) { clear_tv(rettv); return FAIL; --- 3622,3628 ---- * we know that the first operand needs to be a string or number * without evaluating the 2nd operand. So check before to avoid * side effects after an error. */ ! if (evaluate && tv_get_string_chk(rettv) == NULL) { clear_tv(rettv); return FAIL; *************** *** 3646,3653 **** */ if (op == '.') { ! s1 = get_tv_string_buf(rettv, buf1); /* already checked */ ! s2 = get_tv_string_buf_chk(&var2, buf2); if (s2 == NULL) /* type error ? */ { clear_tv(rettv); --- 3646,3653 ---- */ if (op == '.') { ! s1 = tv_get_string_buf(rettv, buf1); /* already checked */ ! s2 = tv_get_string_buf_chk(&var2, buf2); if (s2 == NULL) /* type error ? */ { clear_tv(rettv); *************** *** 3686,3692 **** else #endif { ! n1 = get_tv_number_chk(rettv, &error); if (error) { /* This can only happen for "list + non-list". For --- 3686,3692 ---- else #endif { ! n1 = tv_get_number_chk(rettv, &error); if (error) { /* This can only happen for "list + non-list". For *************** *** 3709,3715 **** else #endif { ! n2 = get_tv_number_chk(&var2, &error); if (error) { clear_tv(rettv); --- 3709,3715 ---- else #endif { ! n2 = tv_get_number_chk(&var2, &error); if (error) { clear_tv(rettv); *************** *** 3804,3810 **** } else #endif ! n1 = get_tv_number_chk(rettv, &error); clear_tv(rettv); if (error) return FAIL; --- 3804,3810 ---- } else #endif ! n1 = tv_get_number_chk(rettv, &error); clear_tv(rettv); if (error) return FAIL; *************** *** 3835,3841 **** else #endif { ! n2 = get_tv_number_chk(&var2, &error); clear_tv(&var2); if (error) return FAIL; --- 3835,3841 ---- else #endif { ! n2 = tv_get_number_chk(&var2, &error); clear_tv(&var2); if (error) return FAIL; *************** *** 4200,4206 **** f = rettv->vval.v_float; else #endif ! val = get_tv_number_chk(rettv, &error); if (error) { clear_tv(rettv); --- 4200,4206 ---- f = rettv->vval.v_float; else #endif ! val = tv_get_number_chk(rettv, &error); if (error) { clear_tv(rettv); *************** *** 4326,4332 **** empty1 = TRUE; else if (eval1(arg, &var1, evaluate) == FAIL) /* recursive! */ return FAIL; ! else if (evaluate && get_tv_string_chk(&var1) == NULL) { /* not a number or string */ clear_tv(&var1); --- 4326,4332 ---- empty1 = TRUE; else if (eval1(arg, &var1, evaluate) == FAIL) /* recursive! */ return FAIL; ! else if (evaluate && tv_get_string_chk(&var1) == NULL) { /* not a number or string */ clear_tv(&var1); *************** *** 4348,4354 **** clear_tv(&var1); return FAIL; } ! else if (evaluate && get_tv_string_chk(&var2) == NULL) { /* not a number or string */ if (!empty1) --- 4348,4354 ---- clear_tv(&var1); return FAIL; } ! else if (evaluate && tv_get_string_chk(&var2) == NULL) { /* not a number or string */ if (!empty1) *************** *** 4376,4382 **** n1 = 0; if (!empty1 && rettv->v_type != VAR_DICT) { ! n1 = get_tv_number(&var1); clear_tv(&var1); } if (range) --- 4376,4382 ---- n1 = 0; if (!empty1 && rettv->v_type != VAR_DICT) { ! n1 = tv_get_number(&var1); clear_tv(&var1); } if (range) *************** *** 4385,4391 **** n2 = -1; else { ! n2 = get_tv_number(&var2); clear_tv(&var2); } } --- 4385,4391 ---- n2 = -1; else { ! n2 = tv_get_number(&var2); clear_tv(&var2); } } *************** *** 4403,4409 **** case VAR_NUMBER: case VAR_STRING: ! s = get_tv_string(rettv); len = (long)STRLEN(s); if (range) { --- 4403,4409 ---- case VAR_NUMBER: case VAR_STRING: ! s = tv_get_string(rettv); len = (long)STRLEN(s); if (range) { *************** *** 4504,4510 **** if (len == -1) { ! key = get_tv_string_chk(&var1); if (key == NULL) { clear_tv(&var1); --- 4504,4510 ---- if (len == -1) { ! key = tv_get_string_chk(&var1); if (key == NULL) { clear_tv(&var1); *************** *** 4974,4981 **** return tv1->vval.v_number == tv2->vval.v_number; case VAR_STRING: ! s1 = get_tv_string_buf(tv1, buf1); ! s2 = get_tv_string_buf(tv2, buf2); return ((ic ? MB_STRICMP(s1, s2) : STRCMP(s1, s2)) == 0); case VAR_SPECIAL: --- 4974,4981 ---- return tv1->vval.v_number == tv2->vval.v_number; case VAR_STRING: ! s1 = tv_get_string_buf(tv1, buf1); ! s2 = tv_get_string_buf(tv2, buf2); return ((ic ? MB_STRICMP(s1, s2) : STRCMP(s1, s2)) == 0); case VAR_SPECIAL: *************** *** 5652,5664 **** case VAR_NUMBER: case VAR_UNKNOWN: *tofree = NULL; ! r = get_tv_string_buf(tv, numbuf); break; case VAR_JOB: case VAR_CHANNEL: *tofree = NULL; ! r = get_tv_string_buf(tv, numbuf); if (composite_val) { *tofree = string_quote(r, FALSE); --- 5652,5664 ---- case VAR_NUMBER: case VAR_UNKNOWN: *tofree = NULL; ! r = tv_get_string_buf(tv, numbuf); break; case VAR_JOB: case VAR_CHANNEL: *tofree = NULL; ! r = tv_get_string_buf(tv, numbuf); if (composite_val) { *tofree = string_quote(r, FALSE); *************** *** 5913,5919 **** return &pos; } ! name = get_tv_string_chk(varp); if (name == NULL) return NULL; if (name[0] == '.') /* cursor */ --- 5913,5919 ---- return &pos; } ! name = tv_get_string_chk(varp); if (name == NULL) return NULL; if (name[0] == '.') /* cursor */ *************** *** 6363,6369 **** char_u * get_vim_var_str(int idx) { ! return get_tv_string(&vimvars[idx].vv_tv); } /* --- 6363,6369 ---- char_u * get_vim_var_str(int idx) { ! return tv_get_string(&vimvars[idx].vv_tv); } /* *************** *** 6936,6955 **** * Get the number value of a variable. * If it is a String variable, uses vim_str2nr(). * For incompatible types, return 0. ! * get_tv_number_chk() is similar to get_tv_number(), but informs the * caller of incompatible types: it sets *denote to TRUE if "denote" * is not NULL or returns -1 otherwise. */ varnumber_T ! get_tv_number(typval_T *varp) { int error = FALSE; ! return get_tv_number_chk(varp, &error); /* return 0L on error */ } varnumber_T ! get_tv_number_chk(typval_T *varp, int *denote) { varnumber_T n = 0L; --- 6936,6955 ---- * Get the number value of a variable. * If it is a String variable, uses vim_str2nr(). * For incompatible types, return 0. ! * tv_get_number_chk() is similar to tv_get_number(), but informs the * caller of incompatible types: it sets *denote to TRUE if "denote" * is not NULL or returns -1 otherwise. */ varnumber_T ! tv_get_number(typval_T *varp) { int error = FALSE; ! return tv_get_number_chk(varp, &error); /* return 0L on error */ } varnumber_T ! tv_get_number_chk(typval_T *varp, int *denote) { varnumber_T n = 0L; *************** *** 6991,6997 **** break; #endif case VAR_UNKNOWN: ! internal_error("get_tv_number(UNKNOWN)"); break; } if (denote == NULL) /* useful for values that must be unsigned */ --- 6991,6997 ---- break; #endif case VAR_UNKNOWN: ! internal_error("tv_get_number(UNKNOWN)"); break; } if (denote == NULL) /* useful for values that must be unsigned */ *************** *** 7003,7009 **** #ifdef FEAT_FLOAT float_T ! get_tv_float(typval_T *varp) { switch (varp->v_type) { --- 7003,7009 ---- #ifdef FEAT_FLOAT float_T ! tv_get_float(typval_T *varp) { switch (varp->v_type) { *************** *** 7038,7044 **** break; # endif case VAR_UNKNOWN: ! internal_error("get_tv_float(UNKNOWN)"); break; } return 0; --- 7038,7044 ---- break; # endif case VAR_UNKNOWN: ! internal_error("tv_get_float(UNKNOWN)"); break; } return 0; *************** *** 7048,7072 **** /* * Get the string value of a variable. * If it is a Number variable, the number is converted into a string. ! * get_tv_string() uses a single, static buffer. YOU CAN ONLY USE IT ONCE! ! * get_tv_string_buf() uses a given buffer. * If the String variable has never been set, return an empty string. * Never returns NULL; ! * get_tv_string_chk() and get_tv_string_buf_chk() are similar, but return * NULL on error. */ char_u * ! get_tv_string(typval_T *varp) { static char_u mybuf[NUMBUFLEN]; ! return get_tv_string_buf(varp, mybuf); } char_u * ! get_tv_string_buf(typval_T *varp, char_u *buf) { ! char_u *res = get_tv_string_buf_chk(varp, buf); return res != NULL ? res : (char_u *)""; } --- 7048,7072 ---- /* * Get the string value of a variable. * If it is a Number variable, the number is converted into a string. ! * tv_get_string() uses a single, static buffer. YOU CAN ONLY USE IT ONCE! ! * tv_get_string_buf() uses a given buffer. * If the String variable has never been set, return an empty string. * Never returns NULL; ! * tv_get_string_chk() and tv_get_string_buf_chk() are similar, but return * NULL on error. */ char_u * ! tv_get_string(typval_T *varp) { static char_u mybuf[NUMBUFLEN]; ! return tv_get_string_buf(varp, mybuf); } char_u * ! tv_get_string_buf(typval_T *varp, char_u *buf) { ! char_u *res = tv_get_string_buf_chk(varp, buf); return res != NULL ? res : (char_u *)""; } *************** *** 7075,7089 **** * Careful: This uses a single, static buffer. YOU CAN ONLY USE IT ONCE! */ char_u * ! get_tv_string_chk(typval_T *varp) { static char_u mybuf[NUMBUFLEN]; ! return get_tv_string_buf_chk(varp, mybuf); } char_u * ! get_tv_string_buf_chk(typval_T *varp, char_u *buf) { switch (varp->v_type) { --- 7075,7089 ---- * Careful: This uses a single, static buffer. YOU CAN ONLY USE IT ONCE! */ char_u * ! tv_get_string_chk(typval_T *varp) { static char_u mybuf[NUMBUFLEN]; ! return tv_get_string_buf_chk(varp, mybuf); } char_u * ! tv_get_string_buf_chk(typval_T *varp, char_u *buf) { switch (varp->v_type) { *************** *** 7298,7304 **** /* * Get the string value of a (global/local) variable. ! * Note: see get_tv_string() for how long the pointer remains valid. * Returns NULL when it doesn't exist. */ char_u * --- 7298,7304 ---- /* * Get the string value of a (global/local) variable. ! * Note: see tv_get_string() for how long the pointer remains valid. * Returns NULL when it doesn't exist. */ char_u * *************** *** 7309,7315 **** v = find_var(name, NULL, FALSE); if (v == NULL) return NULL; ! return get_tv_string(&v->di_tv); } /* --- 7309,7315 ---- v = find_var(name, NULL, FALSE); if (v == NULL) return NULL; ! return tv_get_string(&v->di_tv); } /* *************** *** 7544,7550 **** { vim_free(v->di_tv.vval.v_string); if (copy || tv->v_type != VAR_STRING) ! v->di_tv.vval.v_string = vim_strsave(get_tv_string(tv)); else { /* Take over the string to avoid an extra alloc/free. */ --- 7544,7550 ---- { vim_free(v->di_tv.vval.v_string); if (copy || tv->v_type != VAR_STRING) ! v->di_tv.vval.v_string = vim_strsave(tv_get_string(tv)); else { /* Take over the string to avoid an extra alloc/free. */ *************** *** 7555,7561 **** } else if (v->di_tv.v_type == VAR_NUMBER) { ! v->di_tv.vval.v_number = get_tv_number(tv); if (STRCMP(varname, "searchforward") == 0) set_search_direction(v->di_tv.vval.v_number ? '/' : '?'); #ifdef FEAT_SEARCH_EXTRA --- 7555,7561 ---- } else if (v->di_tv.v_type == VAR_NUMBER) { ! v->di_tv.vval.v_number = tv_get_number(tv); if (STRCMP(varname, "searchforward") == 0) set_search_direction(v->di_tv.vval.v_number ? '/' : '?'); #ifdef FEAT_SEARCH_EXTRA *************** *** 7894,7900 **** int inputdialog, int secret) { ! char_u *prompt = get_tv_string_chk(&argvars[0]); char_u *p = NULL; int c; char_u buf[NUMBUFLEN]; --- 7894,7900 ---- int inputdialog, int secret) { ! char_u *prompt = tv_get_string_chk(&argvars[0]); char_u *p = NULL; int c; char_u buf[NUMBUFLEN]; *************** *** 7937,7943 **** if (argvars[1].v_type != VAR_UNKNOWN) { ! defstr = get_tv_string_buf_chk(&argvars[1], buf); if (defstr != NULL) stuffReadbuffSpec(defstr); --- 7937,7943 ---- if (argvars[1].v_type != VAR_UNKNOWN) { ! defstr = tv_get_string_buf_chk(&argvars[1], buf); if (defstr != NULL) stuffReadbuffSpec(defstr); *************** *** 7950,7956 **** /* input() with a third argument: completion */ rettv->vval.v_string = NULL; ! xp_name = get_tv_string_buf_chk(&argvars[2], buf); if (xp_name == NULL) return; --- 7950,7956 ---- /* input() with a third argument: completion */ rettv->vval.v_string = NULL; ! xp_name = tv_get_string_buf_chk(&argvars[2], buf); if (xp_name == NULL) return; *************** *** 7975,7981 **** if (inputdialog && rettv->vval.v_string == NULL && argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN) ! rettv->vval.v_string = vim_strsave(get_tv_string_buf( &argvars[2], buf)); vim_free(xp_arg); --- 7975,7981 ---- if (inputdialog && rettv->vval.v_string == NULL && argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN) ! rettv->vval.v_string = vim_strsave(tv_get_string_buf( &argvars[2], buf)); vim_free(xp_arg); *************** *** 8142,8148 **** if (!eap->skip) { ! p = get_tv_string(&rettv); len = (int)STRLEN(p); if (ga_grow(&ga, len + 2) == FAIL) { --- 8142,8148 ---- if (!eap->skip) { ! p = tv_get_string(&rettv); len = (int)STRLEN(p); if (ga_grow(&ga, len + 2) == FAIL) { *************** *** 8205,8211 **** tabpage_T *tp) /* NULL for current tab page */ { win_T *wp; ! int nr = (int)get_tv_number_chk(vp, NULL); if (nr < 0) return NULL; --- 8205,8211 ---- tabpage_T *tp) /* NULL for current tab page */ { win_T *wp; ! int nr = (int)tv_get_number_chk(vp, NULL); if (nr < 0) return NULL; *************** *** 8234,8240 **** win_T * find_win_by_nr_or_id(typval_T *vp) { ! int nr = (int)get_tv_number_chk(vp, NULL); if (nr >= LOWEST_WIN_ID) return win_id2wp(vp); --- 8234,8240 ---- win_T * find_win_by_nr_or_id(typval_T *vp) { ! int nr = (int)tv_get_number_chk(vp, NULL); if (nr >= LOWEST_WIN_ID) return win_id2wp(vp); *************** *** 8257,8263 **** { if (tvp->v_type != VAR_UNKNOWN) { ! n = (long)get_tv_number(tvp); if (n >= 0) tp = find_tabpage(n); } --- 8257,8263 ---- { if (tvp->v_type != VAR_UNKNOWN) { ! n = (long)tv_get_number(tvp); if (n >= 0) tp = find_tabpage(n); } *************** *** 8292,8302 **** int need_switch_win; if (off == 1) ! tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL)); else tp = curtab; win = find_win_by_nr(&argvars[off], tp); ! varname = get_tv_string_chk(&argvars[off + 1]); ++emsg_off; rettv->v_type = VAR_STRING; --- 8292,8302 ---- int need_switch_win; if (off == 1) ! tp = find_tabpage((int)tv_get_number_chk(&argvars[0], NULL)); else tp = curtab; win = find_win_by_nr(&argvars[off], tp); ! varname = tv_get_string_chk(&argvars[off + 1]); ++emsg_off; rettv->v_type = VAR_STRING; *************** *** 8373,8383 **** return; if (off == 1) ! tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL)); else tp = curtab; win = find_win_by_nr(&argvars[off], tp); ! varname = get_tv_string_chk(&argvars[off + 1]); varp = &argvars[off + 2]; if (win != NULL && varname != NULL && varp != NULL) --- 8373,8383 ---- return; if (off == 1) ! tp = find_tabpage((int)tv_get_number_chk(&argvars[0], NULL)); else tp = curtab; win = find_win_by_nr(&argvars[off], tp); ! varname = tv_get_string_chk(&argvars[off + 1]); varp = &argvars[off + 2]; if (win != NULL && varname != NULL && varp != NULL) *************** *** 8393,8400 **** int error = FALSE; ++varname; ! numval = (long)get_tv_number_chk(varp, &error); ! strval = get_tv_string_buf_chk(varp, nbuf); if (!error && strval != NULL) set_option_value(varname, numval, strval, OPT_LOCAL); } --- 8393,8400 ---- int error = FALSE; ++varname; ! numval = (long)tv_get_number_chk(varp, &error); ! strval = tv_get_string_buf_chk(varp, nbuf); if (!error && strval != NULL) set_option_value(varname, numval, strval, OPT_LOCAL); } *************** *** 8697,8703 **** { /* Escape special characters with a backslash. Turn a LF and * CR into \n and \r. */ ! p = vim_strsave_escaped(get_tv_string(&this_var->di_tv), (char_u *)"\\\"\n\r"); if (p == NULL) /* out of memory */ break; --- 8697,8703 ---- { /* Escape special characters with a backslash. Turn a LF and * CR into \n and \r. */ ! p = vim_strsave_escaped(tv_get_string(&this_var->di_tv), (char_u *)"\\\"\n\r"); if (p == NULL) /* out of memory */ break; *************** *** 8842,8849 **** { char_u buf1[NUMBUFLEN]; char_u buf2[NUMBUFLEN]; ! char_u *fname1 = get_tv_string_buf_chk(&argvars[0], buf1); ! char_u *fname2 = get_tv_string_buf_chk(&argvars[1], buf2); garray_T ga; FILE *fd1; FILE *fd2; --- 8842,8849 ---- { char_u buf1[NUMBUFLEN]; char_u buf2[NUMBUFLEN]; ! char_u *fname1 = tv_get_string_buf_chk(&argvars[0], buf1); ! char_u *fname2 = tv_get_string_buf_chk(&argvars[1], buf2); garray_T ga; FILE *fd1; FILE *fd2; *************** *** 8914,8921 **** garray_T ga; char_u buf1[NUMBUFLEN]; char_u buf2[NUMBUFLEN]; ! char_u *pat = get_tv_string_buf_chk(&argvars[0], buf1); ! char_u *text = get_tv_string_buf_chk(&argvars[1], buf2); if (pat == NULL || text == NULL) EMSG(_(e_invarg)); --- 8914,8921 ---- garray_T ga; char_u buf1[NUMBUFLEN]; char_u buf2[NUMBUFLEN]; ! char_u *pat = tv_get_string_buf_chk(&argvars[0], buf1); ! char_u *text = tv_get_string_buf_chk(&argvars[1], buf2); if (pat == NULL || text == NULL) EMSG(_(e_invarg)); *************** *** 8936,8944 **** { garray_T ga; int error = FALSE; ! varnumber_T lower = get_tv_number_chk(&argvars[0], &error); ! varnumber_T upper = get_tv_number_chk(&argvars[1], &error); ! varnumber_T actual = get_tv_number_chk(&argvars[2], &error); char_u *tofree; char msg[200]; char_u numbuf[NUMBUFLEN]; --- 8936,8944 ---- { garray_T ga; int error = FALSE; ! varnumber_T lower = tv_get_number_chk(&argvars[0], &error); ! varnumber_T upper = tv_get_number_chk(&argvars[1], &error); ! varnumber_T actual = tv_get_number_chk(&argvars[2], &error); char_u *tofree; char msg[200]; char_u numbuf[NUMBUFLEN]; *************** *** 8980,8986 **** && argvars[0].vval.v_number == (isTrue ? VVAL_TRUE : VVAL_FALSE)) return 0; if (argvars[0].v_type != VAR_NUMBER ! || (get_tv_number_chk(&argvars[0], &error) == 0) == isTrue || error) { prepare_assert_error(&ga); --- 8980,8986 ---- && argvars[0].vval.v_number == (isTrue ? VVAL_TRUE : VVAL_FALSE)) return 0; if (argvars[0].v_type != VAR_NUMBER ! || (tv_get_number_chk(&argvars[0], &error) == 0) == isTrue || error) { prepare_assert_error(&ga); *************** *** 9000,9006 **** garray_T ga; prepare_assert_error(&ga); ! ga_concat(&ga, get_tv_string(&argvars[0])); assert_error(&ga); ga_clear(&ga); return 1; --- 9000,9006 ---- garray_T ga; prepare_assert_error(&ga); ! ga_concat(&ga, tv_get_string(&argvars[0])); assert_error(&ga); ga_clear(&ga); return 1; *************** *** 9010,9016 **** assert_exception(typval_T *argvars) { garray_T ga; ! char_u *error = get_tv_string_chk(&argvars[0]); if (vimvars[VV_EXCEPTION].vv_str == NULL) { --- 9010,9016 ---- assert_exception(typval_T *argvars) { garray_T ga; ! char_u *error = tv_get_string_chk(&argvars[0]); if (vimvars[VV_EXCEPTION].vv_str == NULL) { *************** *** 9036,9042 **** int assert_beeps(typval_T *argvars) { ! char_u *cmd = get_tv_string_chk(&argvars[0]); garray_T ga; int ret = 0; --- 9036,9042 ---- int assert_beeps(typval_T *argvars) { ! char_u *cmd = tv_get_string_chk(&argvars[0]); garray_T ga; int ret = 0; *************** *** 9062,9068 **** int assert_fails(typval_T *argvars) { ! char_u *cmd = get_tv_string_chk(&argvars[0]); garray_T ga; int ret = 0; char_u numbuf[NUMBUFLEN]; --- 9062,9068 ---- int assert_fails(typval_T *argvars) { ! char_u *cmd = tv_get_string_chk(&argvars[0]); garray_T ga; int ret = 0; char_u numbuf[NUMBUFLEN]; *************** *** 9091,9097 **** else if (argvars[1].v_type != VAR_UNKNOWN) { char_u buf[NUMBUFLEN]; ! char *error = (char *)get_tv_string_buf_chk(&argvars[1], buf); if (error == NULL || strstr((char *)vimvars[VV_ERRMSG].vv_str, error) == NULL) --- 9091,9097 ---- else if (argvars[1].v_type != VAR_UNKNOWN) { char_u buf[NUMBUFLEN]; ! char *error = (char *)tv_get_string_buf_chk(&argvars[1], buf); if (error == NULL || strstr((char *)vimvars[VV_ERRMSG].vv_str, error) == NULL) *************** *** 9325,9335 **** if (typ1->v_type == VAR_FLOAT) f1 = typ1->vval.v_float; else ! f1 = get_tv_number(typ1); if (typ2->v_type == VAR_FLOAT) f2 = typ2->vval.v_float; else ! f2 = get_tv_number(typ2); n1 = FALSE; switch (type) { --- 9325,9335 ---- if (typ1->v_type == VAR_FLOAT) f1 = typ1->vval.v_float; else ! f1 = tv_get_number(typ1); if (typ2->v_type == VAR_FLOAT) f2 = typ2->vval.v_float; else ! f2 = tv_get_number(typ2); n1 = FALSE; switch (type) { *************** *** 9353,9360 **** else if ((typ1->v_type == VAR_NUMBER || typ2->v_type == VAR_NUMBER) && type != TYPE_MATCH && type != TYPE_NOMATCH) { ! n1 = get_tv_number(typ1); ! n2 = get_tv_number(typ2); switch (type) { case TYPE_EQUAL: n1 = (n1 == n2); break; --- 9353,9360 ---- else if ((typ1->v_type == VAR_NUMBER || typ2->v_type == VAR_NUMBER) && type != TYPE_MATCH && type != TYPE_NOMATCH) { ! n1 = tv_get_number(typ1); ! n2 = tv_get_number(typ2); switch (type) { case TYPE_EQUAL: n1 = (n1 == n2); break; *************** *** 9370,9377 **** } else { ! s1 = get_tv_string_buf(typ1, buf1); ! s2 = get_tv_string_buf(typ2, buf2); if (type != TYPE_MATCH && type != TYPE_NOMATCH) i = ic ? MB_STRICMP(s1, s2) : STRCMP(s1, s2); else --- 9370,9377 ---- } else { ! s1 = tv_get_string_buf(typ1, buf1); ! s2 = tv_get_string_buf(typ2, buf2); if (type != TYPE_MATCH && type != TYPE_NOMATCH) i = ic ? MB_STRICMP(s1, s2) : STRCMP(s1, s2); else *************** *** 10220,10229 **** int error = FALSE; /* filter(): when expr is zero remove the item */ ! *remp = (get_tv_number_chk(&rettv, &error) == 0); clear_tv(&rettv); /* On type error, nothing has been removed; return FAIL to stop the ! * loop. The error message was given by get_tv_number_chk(). */ if (error) goto theend; } --- 10220,10229 ---- int error = FALSE; /* filter(): when expr is zero remove the item */ ! *remp = (tv_get_number_chk(&rettv, &error) == 0); clear_tv(&rettv); /* On type error, nothing has been removed; return FAIL to stop the ! * loop. The error message was given by tv_get_number_chk(). */ if (error) goto theend; } *** ../vim-8.1.0614/src/proto/eval.pro 2018-10-25 12:30:52.274659868 +0200 --- src/proto/eval.pro 2018-12-21 16:01:29.181557577 +0100 *************** *** 82,94 **** void free_tv(typval_T *varp); void clear_tv(typval_T *varp); void init_tv(typval_T *varp); ! varnumber_T get_tv_number(typval_T *varp); ! varnumber_T get_tv_number_chk(typval_T *varp, int *denote); ! float_T get_tv_float(typval_T *varp); ! char_u *get_tv_string(typval_T *varp); ! char_u *get_tv_string_buf(typval_T *varp, char_u *buf); ! char_u *get_tv_string_chk(typval_T *varp); ! char_u *get_tv_string_buf_chk(typval_T *varp, char_u *buf); dictitem_T *find_var(char_u *name, hashtab_T **htp, int no_autoload); dictitem_T *find_var_in_ht(hashtab_T *ht, int htname, char_u *varname, int no_autoload); hashtab_T *find_var_ht(char_u *name, char_u **varname); --- 82,94 ---- void free_tv(typval_T *varp); void clear_tv(typval_T *varp); void init_tv(typval_T *varp); ! varnumber_T tv_get_number(typval_T *varp); ! varnumber_T tv_get_number_chk(typval_T *varp, int *denote); ! float_T tv_get_float(typval_T *varp); ! char_u *tv_get_string(typval_T *varp); ! char_u *tv_get_string_buf(typval_T *varp, char_u *buf); ! char_u *tv_get_string_chk(typval_T *varp); ! char_u *tv_get_string_buf_chk(typval_T *varp, char_u *buf); dictitem_T *find_var(char_u *name, hashtab_T **htp, int no_autoload); dictitem_T *find_var_in_ht(hashtab_T *ht, int htname, char_u *varname, int no_autoload); hashtab_T *find_var_ht(char_u *name, char_u **varname); *** ../vim-8.1.0614/src/channel.c 2018-12-14 21:31:58.008319718 +0100 --- src/channel.c 2018-12-21 15:59:11.838468714 +0100 *************** *** 938,944 **** jobopt_T opt; channel_T *channel = NULL; ! address = get_tv_string(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN && (argvars[1].v_type != VAR_DICT || argvars[1].vval.v_dict == NULL)) { --- 938,944 ---- jobopt_T opt; channel_T *channel = NULL; ! address = tv_get_string(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN && (argvars[1].v_type != VAR_DICT || argvars[1].vval.v_dict == NULL)) { *************** *** 4003,4009 **** rettv->v_type = VAR_STRING; rettv->vval.v_string = NULL; ! text = get_tv_string_buf(&argvars[1], buf); channel = send_common(argvars, text, 0, eval, &opt, eval ? "ch_evalraw" : "ch_sendraw", &part_read); if (channel != NULL && eval) --- 4003,4009 ---- rettv->v_type = VAR_STRING; rettv->vval.v_string = NULL; ! text = tv_get_string_buf(&argvars[1], buf); channel = send_common(argvars, text, 0, eval, &opt, eval ? "ch_evalraw" : "ch_sendraw", &part_read); if (channel != NULL && eval) *************** *** 4402,4408 **** static int handle_mode(typval_T *item, jobopt_T *opt, ch_mode_T *modep, int jo) { ! char_u *val = get_tv_string(item); opt->jo_set |= jo; if (STRCMP(val, "nl") == 0) --- 4402,4408 ---- static int handle_mode(typval_T *item, jobopt_T *opt, ch_mode_T *modep, int jo) { ! char_u *val = tv_get_string(item); opt->jo_set |= jo; if (STRCMP(val, "nl") == 0) *************** *** 4424,4430 **** static int handle_io(typval_T *item, ch_part_T part, jobopt_T *opt) { ! char_u *val = get_tv_string(item); opt->jo_set |= JO_OUT_IO << (part - PART_OUT); if (STRCMP(val, "null") == 0) --- 4424,4430 ---- static int handle_io(typval_T *item, ch_part_T part, jobopt_T *opt) { ! char_u *val = tv_get_string(item); opt->jo_set |= JO_OUT_IO << (part - PART_OUT); if (STRCMP(val, "null") == 0) *************** *** 4561,4567 **** { if (!(supported & JO_MODE)) break; ! opt->jo_noblock = get_tv_number(item); } else if (STRCMP(hi->hi_key, "in_io") == 0 || STRCMP(hi->hi_key, "out_io") == 0 --- 4561,4567 ---- { if (!(supported & JO_MODE)) break; ! opt->jo_noblock = tv_get_number(item); } else if (STRCMP(hi->hi_key, "in_io") == 0 || STRCMP(hi->hi_key, "out_io") == 0 *************** *** 4582,4594 **** break; opt->jo_set |= JO_OUT_NAME << (part - PART_OUT); opt->jo_io_name[part] = ! get_tv_string_buf_chk(item, opt->jo_io_name_buf[part]); } else if (STRCMP(hi->hi_key, "pty") == 0) { if (!(supported & JO_MODE)) break; ! opt->jo_pty = get_tv_number(item); } else if (STRCMP(hi->hi_key, "in_buf") == 0 || STRCMP(hi->hi_key, "out_buf") == 0 --- 4582,4594 ---- break; opt->jo_set |= JO_OUT_NAME << (part - PART_OUT); opt->jo_io_name[part] = ! tv_get_string_buf_chk(item, opt->jo_io_name_buf[part]); } else if (STRCMP(hi->hi_key, "pty") == 0) { if (!(supported & JO_MODE)) break; ! opt->jo_pty = tv_get_number(item); } else if (STRCMP(hi->hi_key, "in_buf") == 0 || STRCMP(hi->hi_key, "out_buf") == 0 *************** *** 4599,4608 **** if (!(supported & JO_OUT_IO)) break; opt->jo_set |= JO_OUT_BUF << (part - PART_OUT); ! opt->jo_io_buf[part] = get_tv_number(item); if (opt->jo_io_buf[part] <= 0) { ! EMSG3(_(e_invargNval), hi->hi_key, get_tv_string(item)); return FAIL; } if (buflist_findnr(opt->jo_io_buf[part]) == NULL) --- 4599,4608 ---- if (!(supported & JO_OUT_IO)) break; opt->jo_set |= JO_OUT_BUF << (part - PART_OUT); ! opt->jo_io_buf[part] = tv_get_number(item); if (opt->jo_io_buf[part] <= 0) { ! EMSG3(_(e_invargNval), hi->hi_key, tv_get_string(item)); return FAIL; } if (buflist_findnr(opt->jo_io_buf[part]) == NULL) *************** *** 4619,4625 **** if (!(supported & JO_OUT_IO)) break; opt->jo_set |= JO_OUT_MODIFIABLE << (part - PART_OUT); ! opt->jo_modifiable[part] = get_tv_number(item); } else if (STRCMP(hi->hi_key, "out_msg") == 0 || STRCMP(hi->hi_key, "err_msg") == 0) --- 4619,4625 ---- if (!(supported & JO_OUT_IO)) break; opt->jo_set |= JO_OUT_MODIFIABLE << (part - PART_OUT); ! opt->jo_modifiable[part] = tv_get_number(item); } else if (STRCMP(hi->hi_key, "out_msg") == 0 || STRCMP(hi->hi_key, "err_msg") == 0) *************** *** 4629,4635 **** if (!(supported & JO_OUT_IO)) break; opt->jo_set2 |= JO2_OUT_MSG << (part - PART_OUT); ! opt->jo_message[part] = get_tv_number(item); } else if (STRCMP(hi->hi_key, "in_top") == 0 || STRCMP(hi->hi_key, "in_bot") == 0) --- 4629,4635 ---- if (!(supported & JO_OUT_IO)) break; opt->jo_set2 |= JO2_OUT_MSG << (part - PART_OUT); ! opt->jo_message[part] = tv_get_number(item); } else if (STRCMP(hi->hi_key, "in_top") == 0 || STRCMP(hi->hi_key, "in_bot") == 0) *************** *** 4648,4657 **** lp = &opt->jo_in_bot; opt->jo_set |= JO_IN_BOT; } ! *lp = get_tv_number(item); if (*lp < 0) { ! EMSG3(_(e_invargNval), hi->hi_key, get_tv_string(item)); return FAIL; } } --- 4648,4657 ---- lp = &opt->jo_in_bot; opt->jo_set |= JO_IN_BOT; } ! *lp = tv_get_number(item); if (*lp < 0) { ! EMSG3(_(e_invargNval), hi->hi_key, tv_get_string(item)); return FAIL; } } *************** *** 4718,4724 **** else if (STRCMP(hi->hi_key, "drop") == 0) { int never = FALSE; ! val = get_tv_string(item); if (STRCMP(val, "never") == 0) never = TRUE; --- 4718,4724 ---- else if (STRCMP(hi->hi_key, "drop") == 0) { int never = FALSE; ! val = tv_get_string(item); if (STRCMP(val, "never") == 0) never = TRUE; *************** *** 4747,4753 **** if (!(supported2 & JO2_TERM_NAME)) break; opt->jo_set2 |= JO2_TERM_NAME; ! opt->jo_term_name = get_tv_string_chk(item); if (opt->jo_term_name == NULL) { EMSG2(_(e_invargval), "term_name"); --- 4747,4753 ---- if (!(supported2 & JO2_TERM_NAME)) break; opt->jo_set2 |= JO2_TERM_NAME; ! opt->jo_term_name = tv_get_string_chk(item); if (opt->jo_term_name == NULL) { EMSG2(_(e_invargval), "term_name"); *************** *** 4758,4764 **** { if (!(supported2 & JO2_TERM_FINISH)) break; ! val = get_tv_string(item); if (STRCMP(val, "open") != 0 && STRCMP(val, "close") != 0) { EMSG3(_(e_invargNval), "term_finish", val); --- 4758,4764 ---- { if (!(supported2 & JO2_TERM_FINISH)) break; ! val = tv_get_string(item); if (STRCMP(val, "open") != 0 && STRCMP(val, "close") != 0) { EMSG3(_(e_invargNval), "term_finish", val); *************** *** 4774,4780 **** if (!(supported2 & JO2_TERM_OPENCMD)) break; opt->jo_set2 |= JO2_TERM_OPENCMD; ! p = opt->jo_term_opencmd = get_tv_string_chk(item); if (p != NULL) { /* Must have %d and no other %. */ --- 4774,4780 ---- if (!(supported2 & JO2_TERM_OPENCMD)) break; opt->jo_set2 |= JO2_TERM_OPENCMD; ! p = opt->jo_term_opencmd = tv_get_string_chk(item); if (p != NULL) { /* Must have %d and no other %. */ *************** *** 4796,4802 **** if (!(supported2 & JO2_EOF_CHARS)) break; opt->jo_set2 |= JO2_EOF_CHARS; ! p = opt->jo_eof_chars = get_tv_string_chk(item); if (p == NULL) { EMSG2(_(e_invargval), "eof_chars"); --- 4796,4802 ---- if (!(supported2 & JO2_EOF_CHARS)) break; opt->jo_set2 |= JO2_EOF_CHARS; ! p = opt->jo_eof_chars = tv_get_string_chk(item); if (p == NULL) { EMSG2(_(e_invargval), "eof_chars"); *************** *** 4808,4861 **** if (!(supported2 & JO2_TERM_ROWS)) break; opt->jo_set2 |= JO2_TERM_ROWS; ! opt->jo_term_rows = get_tv_number(item); } else if (STRCMP(hi->hi_key, "term_cols") == 0) { if (!(supported2 & JO2_TERM_COLS)) break; opt->jo_set2 |= JO2_TERM_COLS; ! opt->jo_term_cols = get_tv_number(item); } else if (STRCMP(hi->hi_key, "vertical") == 0) { if (!(supported2 & JO2_VERTICAL)) break; opt->jo_set2 |= JO2_VERTICAL; ! opt->jo_vertical = get_tv_number(item); } else if (STRCMP(hi->hi_key, "curwin") == 0) { if (!(supported2 & JO2_CURWIN)) break; opt->jo_set2 |= JO2_CURWIN; ! opt->jo_curwin = get_tv_number(item); } else if (STRCMP(hi->hi_key, "hidden") == 0) { if (!(supported2 & JO2_HIDDEN)) break; opt->jo_set2 |= JO2_HIDDEN; ! opt->jo_hidden = get_tv_number(item); } else if (STRCMP(hi->hi_key, "norestore") == 0) { if (!(supported2 & JO2_NORESTORE)) break; opt->jo_set2 |= JO2_NORESTORE; ! opt->jo_term_norestore = get_tv_number(item); } else if (STRCMP(hi->hi_key, "term_kill") == 0) { if (!(supported2 & JO2_TERM_KILL)) break; opt->jo_set2 |= JO2_TERM_KILL; ! opt->jo_term_kill = get_tv_string_chk(item); } # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS) else if (STRCMP(hi->hi_key, "ansi_colors") == 0) { ! int n = 0; listitem_T *li; long_u rgb[16]; --- 4808,4861 ---- if (!(supported2 & JO2_TERM_ROWS)) break; opt->jo_set2 |= JO2_TERM_ROWS; ! opt->jo_term_rows = tv_get_number(item); } else if (STRCMP(hi->hi_key, "term_cols") == 0) { if (!(supported2 & JO2_TERM_COLS)) break; opt->jo_set2 |= JO2_TERM_COLS; ! opt->jo_term_cols = tv_get_number(item); } else if (STRCMP(hi->hi_key, "vertical") == 0) { if (!(supported2 & JO2_VERTICAL)) break; opt->jo_set2 |= JO2_VERTICAL; ! opt->jo_vertical = tv_get_number(item); } else if (STRCMP(hi->hi_key, "curwin") == 0) { if (!(supported2 & JO2_CURWIN)) break; opt->jo_set2 |= JO2_CURWIN; ! opt->jo_curwin = tv_get_number(item); } else if (STRCMP(hi->hi_key, "hidden") == 0) { if (!(supported2 & JO2_HIDDEN)) break; opt->jo_set2 |= JO2_HIDDEN; ! opt->jo_hidden = tv_get_number(item); } else if (STRCMP(hi->hi_key, "norestore") == 0) { if (!(supported2 & JO2_NORESTORE)) break; opt->jo_set2 |= JO2_NORESTORE; ! opt->jo_term_norestore = tv_get_number(item); } else if (STRCMP(hi->hi_key, "term_kill") == 0) { if (!(supported2 & JO2_TERM_KILL)) break; opt->jo_set2 |= JO2_TERM_KILL; ! opt->jo_term_kill = tv_get_string_chk(item); } # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS) else if (STRCMP(hi->hi_key, "ansi_colors") == 0) { ! int n = 0; listitem_T *li; long_u rgb[16]; *************** *** 4873,4881 **** for (; li != NULL && n < 16; li = li->li_next, n++) { char_u *color_name; ! guicolor_T guicolor; ! color_name = get_tv_string_chk(&li->li_tv); if (color_name == NULL) return FAIL; --- 4873,4881 ---- for (; li != NULL && n < 16; li = li->li_next, n++) { char_u *color_name; ! guicolor_T guicolor; ! color_name = tv_get_string_chk(&li->li_tv); if (color_name == NULL) return FAIL; *************** *** 4915,4921 **** { if (!(supported2 & JO2_CWD)) break; ! opt->jo_cwd = get_tv_string_buf_chk(item, opt->jo_cwd_buf); if (opt->jo_cwd == NULL || !mch_isdir(opt->jo_cwd) #ifndef WIN32 // Win32 directories don't have the concept of "executable" || mch_access((char *)opt->jo_cwd, X_OK) != 0 --- 4915,4921 ---- { if (!(supported2 & JO2_CWD)) break; ! opt->jo_cwd = tv_get_string_buf_chk(item, opt->jo_cwd_buf); if (opt->jo_cwd == NULL || !mch_isdir(opt->jo_cwd) #ifndef WIN32 // Win32 directories don't have the concept of "executable" || mch_access((char *)opt->jo_cwd, X_OK) != 0 *************** *** 4932,4966 **** if (!(supported & JO_WAITTIME)) break; opt->jo_set |= JO_WAITTIME; ! opt->jo_waittime = get_tv_number(item); } else if (STRCMP(hi->hi_key, "timeout") == 0) { if (!(supported & JO_TIMEOUT)) break; opt->jo_set |= JO_TIMEOUT; ! opt->jo_timeout = get_tv_number(item); } else if (STRCMP(hi->hi_key, "out_timeout") == 0) { if (!(supported & JO_OUT_TIMEOUT)) break; opt->jo_set |= JO_OUT_TIMEOUT; ! opt->jo_out_timeout = get_tv_number(item); } else if (STRCMP(hi->hi_key, "err_timeout") == 0) { if (!(supported & JO_ERR_TIMEOUT)) break; opt->jo_set |= JO_ERR_TIMEOUT; ! opt->jo_err_timeout = get_tv_number(item); } else if (STRCMP(hi->hi_key, "part") == 0) { if (!(supported & JO_PART)) break; opt->jo_set |= JO_PART; ! val = get_tv_string(item); if (STRCMP(val, "err") == 0) opt->jo_part = PART_ERR; else if (STRCMP(val, "out") == 0) --- 4932,4966 ---- if (!(supported & JO_WAITTIME)) break; opt->jo_set |= JO_WAITTIME; ! opt->jo_waittime = tv_get_number(item); } else if (STRCMP(hi->hi_key, "timeout") == 0) { if (!(supported & JO_TIMEOUT)) break; opt->jo_set |= JO_TIMEOUT; ! opt->jo_timeout = tv_get_number(item); } else if (STRCMP(hi->hi_key, "out_timeout") == 0) { if (!(supported & JO_OUT_TIMEOUT)) break; opt->jo_set |= JO_OUT_TIMEOUT; ! opt->jo_out_timeout = tv_get_number(item); } else if (STRCMP(hi->hi_key, "err_timeout") == 0) { if (!(supported & JO_ERR_TIMEOUT)) break; opt->jo_set |= JO_ERR_TIMEOUT; ! opt->jo_err_timeout = tv_get_number(item); } else if (STRCMP(hi->hi_key, "part") == 0) { if (!(supported & JO_PART)) break; opt->jo_set |= JO_PART; ! val = tv_get_string(item); if (STRCMP(val, "err") == 0) opt->jo_part = PART_ERR; else if (STRCMP(val, "out") == 0) *************** *** 4976,4989 **** if (!(supported & JO_ID)) break; opt->jo_set |= JO_ID; ! opt->jo_id = get_tv_number(item); } else if (STRCMP(hi->hi_key, "stoponexit") == 0) { if (!(supported & JO_STOPONEXIT)) break; opt->jo_set |= JO_STOPONEXIT; ! opt->jo_stoponexit = get_tv_string_buf_chk(item, opt->jo_soe_buf); if (opt->jo_stoponexit == NULL) { --- 4976,4989 ---- if (!(supported & JO_ID)) break; opt->jo_set |= JO_ID; ! opt->jo_id = tv_get_number(item); } else if (STRCMP(hi->hi_key, "stoponexit") == 0) { if (!(supported & JO_STOPONEXIT)) break; opt->jo_set |= JO_STOPONEXIT; ! opt->jo_stoponexit = tv_get_string_buf_chk(item, opt->jo_soe_buf); if (opt->jo_stoponexit == NULL) { *************** *** 4996,5002 **** if (!(supported & JO_BLOCK_WRITE)) break; opt->jo_set |= JO_BLOCK_WRITE; ! opt->jo_block_write = get_tv_number(item); } else break; --- 4996,5002 ---- if (!(supported & JO_BLOCK_WRITE)) break; opt->jo_set |= JO_BLOCK_WRITE; ! opt->jo_block_write = tv_get_number(item); } else break; *************** *** 5035,5041 **** } else { ! EMSG2(_(e_invarg2), get_tv_string(tv)); return NULL; } if (channel != NULL && reading) --- 5035,5041 ---- } else { ! EMSG2(_(e_invarg2), tv_get_string(tv)); return NULL; } if (channel != NULL && reading) *************** *** 5262,5268 **** for (li = l->lv_first; li != NULL; li = li->li_next) { ! s = get_tv_string_chk(&li->li_tv); if (s == NULL) return FAIL; s = win32_escape_arg(s); --- 5262,5268 ---- for (li = l->lv_first; li != NULL; li = li->li_next) { ! s = tv_get_string_chk(&li->li_tv); if (s == NULL) return FAIL; s = win32_escape_arg(s); *************** *** 5832,5838 **** arg = (char_u *)""; else { ! arg = get_tv_string_chk(&argvars[1]); if (arg == NULL) { EMSG(_(e_invarg)); --- 5832,5838 ---- arg = (char_u *)""; else { ! arg = tv_get_string_chk(&argvars[1]); if (arg == NULL) { EMSG(_(e_invarg)); *** ../vim-8.1.0614/src/dict.c 2018-12-14 15:38:28.323597695 +0100 --- src/dict.c 2018-12-21 15:57:01.811321106 +0100 *************** *** 495,501 **** di = dict_find(d, key, -1); if (di == NULL) return NULL; ! s = get_tv_string(&di->di_tv); if (save && s != NULL) s = vim_strsave(s); return s; --- 495,501 ---- di = dict_find(d, key, -1); if (di == NULL) return NULL; ! s = tv_get_string(&di->di_tv); if (save && s != NULL) s = vim_strsave(s); return s; *************** *** 513,519 **** di = dict_find(d, key, -1); if (di == NULL) return 0; ! return get_tv_number(&di->di_tv); } /* --- 513,519 ---- di = dict_find(d, key, -1); if (di == NULL) return 0; ! return tv_get_number(&di->di_tv); } /* *************** *** 630,639 **** } if (evaluate) { ! key = get_tv_string_buf_chk(&tvkey, buf); if (key == NULL) { ! /* "key" is NULL when get_tv_string_buf_chk() gave an errmsg */ clear_tv(&tvkey); goto failret; } --- 630,639 ---- } if (evaluate) { ! key = tv_get_string_buf_chk(&tvkey, buf); if (key == NULL) { ! /* "key" is NULL when tv_get_string_buf_chk() gave an errmsg */ clear_tv(&tvkey); goto failret; } *** ../vim-8.1.0614/src/evalfunc.c 2018-12-21 15:16:57.479579788 +0100 --- src/evalfunc.c 2018-12-21 16:00:34.913918741 +0100 *************** *** 1133,1144 **** * Returns -1 on error. */ static linenr_T ! get_tv_lnum(typval_T *argvars) { typval_T rettv; linenr_T lnum; ! lnum = (linenr_T)get_tv_number_chk(&argvars[0], NULL); if (lnum == 0) /* no valid number, try using line() */ { rettv.v_type = VAR_NUMBER; --- 1133,1144 ---- * Returns -1 on error. */ static linenr_T ! tv_get_lnum(typval_T *argvars) { typval_T rettv; linenr_T lnum; ! lnum = (linenr_T)tv_get_number_chk(&argvars[0], NULL); if (lnum == 0) /* no valid number, try using line() */ { rettv.v_type = VAR_NUMBER; *************** *** 1149,1154 **** --- 1149,1170 ---- return lnum; } + /* + * Get the lnum from the first argument. + * Also accepts "$", then "buf" is used. + * Returns 0 on error. + */ + static linenr_T + tv_get_lnum_buf(typval_T *argvars, buf_T *buf) + { + if (argvars[0].v_type == VAR_STRING + && argvars[0].vval.v_string != NULL + && argvars[0].vval.v_string[0] == '$' + && buf != NULL) + return buf->b_ml.ml_line_count; + return (linenr_T)tv_get_number_chk(&argvars[0], NULL); + } + #ifdef FEAT_FLOAT /* * Get the float value of "argvars[0]" into "f". *************** *** 1187,1193 **** varnumber_T n; int error = FALSE; ! n = get_tv_number_chk(&argvars[0], &error); if (error) rettv->vval.v_number = -1; else if (n > 0) --- 1203,1209 ---- varnumber_T n; int error = FALSE; ! n = tv_get_number_chk(&argvars[0], &error); if (error) rettv->vval.v_number = -1; else if (n > 0) *************** *** 1240,1263 **** static void f_and(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL) ! & get_tv_number_chk(&argvars[1], NULL); ! } ! ! /* ! * Get the lnum from the first argument. ! * Also accepts "$", then "buf" is used. ! * Returns 0 on error. ! */ ! static linenr_T ! get_tv_lnum_buf(typval_T *argvars, buf_T *buf) ! { ! if (argvars[0].v_type == VAR_STRING ! && argvars[0].vval.v_string != NULL ! && argvars[0].vval.v_string[0] == '$' ! && buf != NULL) ! return buf->b_ml.ml_line_count; ! return (linenr_T)get_tv_number_chk(&argvars[0], NULL); } /* --- 1256,1263 ---- static void f_and(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = tv_get_number_chk(&argvars[0], NULL) ! & tv_get_number_chk(&argvars[1], NULL); } /* *************** *** 1330,1336 **** li = l->lv_first; } else ! line = get_tv_string_chk(lines); /* default result is zero == OK */ for (;;) --- 1330,1336 ---- li = l->lv_first; } else ! line = tv_get_string_chk(lines); /* default result is zero == OK */ for (;;) *************** *** 1340,1346 **** /* list argument, get next string */ if (li == NULL) break; ! line = get_tv_string_chk(&li->li_tv); li = li->li_next; } --- 1340,1346 ---- /* list argument, get next string */ if (li == NULL) break; ! line = tv_get_string_chk(&li->li_tv); li = li->li_next; } *************** *** 1411,1417 **** static void f_append(typval_T *argvars, typval_T *rettv) { ! linenr_T lnum = get_tv_lnum(&argvars[0]); set_buffer_lines(curbuf, lnum, TRUE, &argvars[1], rettv); } --- 1411,1417 ---- static void f_append(typval_T *argvars, typval_T *rettv) { ! linenr_T lnum = tv_get_lnum(&argvars[0]); set_buffer_lines(curbuf, lnum, TRUE, &argvars[1], rettv); } *************** *** 1430,1436 **** rettv->vval.v_number = 1; /* FAIL */ else { ! lnum = get_tv_lnum_buf(&argvars[1], buf); set_buffer_lines(buf, lnum, TRUE, &argvars[2], rettv); } } --- 1430,1436 ---- rettv->vval.v_number = 1; /* FAIL */ else { ! lnum = tv_get_lnum_buf(&argvars[1], buf); set_buffer_lines(buf, lnum, TRUE, &argvars[2], rettv); } } *************** *** 1447,1453 **** // use the current window rettv->vval.v_number = ARGCOUNT; else if (argvars[0].v_type == VAR_NUMBER ! && get_tv_number(&argvars[0]) == -1) // use the global argument list rettv->vval.v_number = GARGCOUNT; else --- 1447,1453 ---- // use the current window rettv->vval.v_number = ARGCOUNT; else if (argvars[0].v_type == VAR_NUMBER ! && tv_get_number(&argvars[0]) == -1) // use the global argument list rettv->vval.v_number = GARGCOUNT; else *************** *** 1516,1522 **** argcount = ARGCOUNT; } else if (argvars[1].v_type == VAR_NUMBER ! && get_tv_number(&argvars[1]) == -1) { arglist = GARGLIST; argcount = GARGCOUNT; --- 1516,1522 ---- argcount = ARGCOUNT; } else if (argvars[1].v_type == VAR_NUMBER ! && tv_get_number(&argvars[1]) == -1) { arglist = GARGLIST; argcount = GARGCOUNT; *************** *** 1535,1541 **** rettv->v_type = VAR_STRING; rettv->vval.v_string = NULL; ! idx = get_tv_number_chk(&argvars[0], NULL); if (arglist != NULL && idx >= 0 && idx < argcount) rettv->vval.v_string = vim_strsave(alist_name(&arglist[idx])); else if (idx == -1) --- 1535,1541 ---- rettv->v_type = VAR_STRING; rettv->vval.v_string = NULL; ! idx = tv_get_number_chk(&argvars[0], NULL); if (arglist != NULL && idx >= 0 && idx < argcount) rettv->vval.v_string = vim_strsave(alist_name(&arglist[idx])); else if (idx == -1) *************** *** 1717,1723 **** ) post_balloon(balloonEval, NULL, argvars[0].vval.v_list); else ! post_balloon(balloonEval, get_tv_string_chk(&argvars[0]), NULL); } } --- 1717,1723 ---- ) post_balloon(balloonEval, NULL, argvars[0].vval.v_list); else ! post_balloon(balloonEval, tv_get_string_chk(&argvars[0]), NULL); } } *************** *** 1727,1733 **** { if (rettv_list_alloc(rettv) == OK) { ! char_u *msg = get_tv_string_chk(&argvars[0]); if (msg != NULL) { --- 1727,1733 ---- { if (rettv_list_alloc(rettv) == OK) { ! char_u *msg = tv_get_string_chk(&argvars[0]); if (msg != NULL) { *************** *** 1762,1771 **** char_u buf2[NUMBUFLEN]; int error = FALSE; ! save = (int)get_tv_number_chk(&argvars[0], &error); ! title = get_tv_string_chk(&argvars[1]); ! initdir = get_tv_string_buf_chk(&argvars[2], buf); ! defname = get_tv_string_buf_chk(&argvars[3], buf2); if (error || title == NULL || initdir == NULL || defname == NULL) rettv->vval.v_string = NULL; --- 1762,1771 ---- char_u buf2[NUMBUFLEN]; int error = FALSE; ! save = (int)tv_get_number_chk(&argvars[0], &error); ! title = tv_get_string_chk(&argvars[1]); ! initdir = tv_get_string_buf_chk(&argvars[2], buf); ! defname = tv_get_string_buf_chk(&argvars[3], buf2); if (error || title == NULL || initdir == NULL || defname == NULL) rettv->vval.v_string = NULL; *************** *** 1790,1797 **** char_u *initdir; char_u buf[NUMBUFLEN]; ! title = get_tv_string_chk(&argvars[0]); ! initdir = get_tv_string_buf_chk(&argvars[1], buf); if (title == NULL || initdir == NULL) rettv->vval.v_string = NULL; --- 1790,1797 ---- char_u *initdir; char_u buf[NUMBUFLEN]; ! title = tv_get_string_chk(&argvars[0]); ! initdir = tv_get_string_buf_chk(&argvars[1], buf); if (title == NULL || initdir == NULL) rettv->vval.v_string = NULL; *************** *** 1924,1930 **** { buf_T *buf; ! (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; buf = get_buf_tv(&argvars[0], FALSE); rettv->v_type = VAR_STRING; --- 1924,1930 ---- { buf_T *buf; ! (void)tv_get_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; buf = get_buf_tv(&argvars[0], FALSE); rettv->v_type = VAR_STRING; *************** *** 1945,1951 **** int error = FALSE; char_u *name; ! (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; buf = get_buf_tv(&argvars[0], FALSE); --emsg_off; --- 1945,1951 ---- int error = FALSE; char_u *name; ! (void)tv_get_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; buf = get_buf_tv(&argvars[0], FALSE); --emsg_off; *************** *** 1954,1962 **** * new buffer. */ if (buf == NULL && argvars[1].v_type != VAR_UNKNOWN ! && get_tv_number_chk(&argvars[1], &error) != 0 && !error ! && (name = get_tv_string_chk(&argvars[0])) != NULL && !error) buf = buflist_new(name, NULL, (linenr_T)1, 0); --- 1954,1962 ---- * new buffer. */ if (buf == NULL && argvars[1].v_type != VAR_UNKNOWN ! && tv_get_number_chk(&argvars[1], &error) != 0 && !error ! && (name = tv_get_string_chk(&argvars[0])) != NULL && !error) buf = buflist_new(name, NULL, (linenr_T)1, 0); *************** *** 1973,1979 **** int winnr = 0; buf_T *buf; ! (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; buf = get_buf_tv(&argvars[0], TRUE); FOR_ALL_WINDOWS(wp) --- 1973,1979 ---- int winnr = 0; buf_T *buf; ! (void)tv_get_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; buf = get_buf_tv(&argvars[0], TRUE); FOR_ALL_WINDOWS(wp) *************** *** 2015,2021 **** #else long boff = 0; ! boff = get_tv_number(&argvars[0]) - 1; /* boff gets -1 on type error */ if (boff < 0) rettv->vval.v_number = -1; else --- 2015,2021 ---- #else long boff = 0; ! boff = tv_get_number(&argvars[0]) - 1; /* boff gets -1 on type error */ if (boff < 0) rettv->vval.v_number = -1; else *************** *** 2033,2040 **** char_u *str; varnumber_T idx; ! str = get_tv_string_chk(&argvars[0]); ! idx = get_tv_number_chk(&argvars[1], NULL); rettv->vval.v_number = -1; if (str == NULL || idx < 0) return; --- 2033,2040 ---- char_u *str; varnumber_T idx; ! str = tv_get_string_chk(&argvars[0]); ! idx = tv_get_number_chk(&argvars[1], NULL); rettv->vval.v_number = -1; if (str == NULL || idx < 0) return; *************** *** 2101,2107 **** func = partial_name(partial); } else ! func = get_tv_string(&argvars[0]); if (*func == NUL) return; /* type error or empty name */ --- 2101,2107 ---- func = partial_name(partial); } else ! func = tv_get_string(&argvars[0]); if (*func == NUL) return; /* type error or empty name */ *************** *** 2189,2195 **** rettv->vval.v_number = -1; if (channel != NULL) { ! char_u *what = get_tv_string(&argvars[1]); int part; if (STRCMP(what, "err") == 0) --- 2189,2195 ---- rettv->vval.v_number = -1; if (channel != NULL) { ! char_u *what = tv_get_string(&argvars[1]); int part; if (STRCMP(what, "err") == 0) *************** *** 2241,2247 **** static void f_ch_log(typval_T *argvars, typval_T *rettv UNUSED) { ! char_u *msg = get_tv_string(&argvars[0]); channel_T *channel = NULL; if (argvars[1].v_type != VAR_UNKNOWN) --- 2241,2247 ---- static void f_ch_log(typval_T *argvars, typval_T *rettv UNUSED) { ! char_u *msg = tv_get_string(&argvars[0]); channel_T *channel = NULL; if (argvars[1].v_type != VAR_UNKNOWN) *************** *** 2263,2271 **** /* Don't open a file in restricted mode. */ if (check_restricted() || check_secure()) return; ! fname = get_tv_string(&argvars[0]); if (argvars[1].v_type == VAR_STRING) ! opt = get_tv_string_buf(&argvars[1], buf); ch_logfile(fname, opt); } --- 2263,2271 ---- /* Don't open a file in restricted mode. */ if (check_restricted() || check_secure()) return; ! fname = tv_get_string(&argvars[0]); if (argvars[1].v_type == VAR_STRING) ! opt = tv_get_string_buf(&argvars[1], buf); ch_logfile(fname, opt); } *************** *** 2403,2418 **** int utf8 = 0; if (argvars[1].v_type != VAR_UNKNOWN) ! utf8 = (int)get_tv_number_chk(&argvars[1], NULL); if (utf8) ! rettv->vval.v_number = (*utf_ptr2char)(get_tv_string(&argvars[0])); else ! rettv->vval.v_number = (*mb_ptr2char)(get_tv_string(&argvars[0])); } else #endif ! rettv->vval.v_number = get_tv_string(&argvars[0])[0]; } /* --- 2403,2418 ---- int utf8 = 0; if (argvars[1].v_type != VAR_UNKNOWN) ! utf8 = (int)tv_get_number_chk(&argvars[1], NULL); if (utf8) ! rettv->vval.v_number = (*utf_ptr2char)(tv_get_string(&argvars[0])); else ! rettv->vval.v_number = (*mb_ptr2char)(tv_get_string(&argvars[0])); } else #endif ! rettv->vval.v_number = tv_get_string(&argvars[0])[0]; } /* *************** *** 2426,2432 **** linenr_T lnum; pos = curwin->w_cursor; ! lnum = get_tv_lnum(argvars); if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count) { curwin->w_cursor.lnum = lnum; --- 2426,2432 ---- linenr_T lnum; pos = curwin->w_cursor; ! lnum = tv_get_lnum(argvars); if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count) { curwin->w_cursor.lnum = lnum; *************** *** 2526,2532 **** return; } ! startcol = (int)get_tv_number_chk(&argvars[0], NULL); if (startcol <= 0) return; --- 2526,2532 ---- return; } ! startcol = (int)tv_get_number_chk(&argvars[0], NULL); if (startcol <= 0) return; *************** *** 2573,2592 **** char_u *typestr; int error = FALSE; ! message = get_tv_string_chk(&argvars[0]); if (message == NULL) error = TRUE; if (argvars[1].v_type != VAR_UNKNOWN) { ! buttons = get_tv_string_buf_chk(&argvars[1], buf); if (buttons == NULL) error = TRUE; if (argvars[2].v_type != VAR_UNKNOWN) { ! def = (int)get_tv_number_chk(&argvars[2], &error); if (argvars[3].v_type != VAR_UNKNOWN) { ! typestr = get_tv_string_buf_chk(&argvars[3], buf2); if (typestr == NULL) error = TRUE; else --- 2573,2592 ---- char_u *typestr; int error = FALSE; ! message = tv_get_string_chk(&argvars[0]); if (message == NULL) error = TRUE; if (argvars[1].v_type != VAR_UNKNOWN) { ! buttons = tv_get_string_buf_chk(&argvars[1], buf); if (buttons == NULL) error = TRUE; if (argvars[2].v_type != VAR_UNKNOWN) { ! def = (int)tv_get_number_chk(&argvars[2], &error); if (argvars[3].v_type != VAR_UNKNOWN) { ! typestr = tv_get_string_buf_chk(&argvars[3], buf2); if (typestr == NULL) error = TRUE; else *************** *** 2665,2675 **** int error = FALSE; if (argvars[2].v_type != VAR_UNKNOWN) ! ic = (int)get_tv_number_chk(&argvars[2], &error); if (argvars[0].v_type == VAR_STRING) { ! char_u *expr = get_tv_string_chk(&argvars[1]); char_u *p = argvars[0].vval.v_string; char_u *next; --- 2665,2675 ---- int error = FALSE; if (argvars[2].v_type != VAR_UNKNOWN) ! ic = (int)tv_get_number_chk(&argvars[2], &error); if (argvars[0].v_type == VAR_STRING) { ! char_u *expr = tv_get_string_chk(&argvars[1]); char_u *p = argvars[0].vval.v_string; char_u *next; *************** *** 2713,2719 **** { if (argvars[3].v_type != VAR_UNKNOWN) { ! idx = (long)get_tv_number_chk(&argvars[3], &error); if (!error) { li = list_find(l, idx); --- 2713,2719 ---- { if (argvars[3].v_type != VAR_UNKNOWN) { ! idx = (long)tv_get_number_chk(&argvars[3], &error); if (!error) { li = list_find(l, idx); *************** *** 2778,2787 **** if (argvars[0].v_type != VAR_UNKNOWN && argvars[1].v_type != VAR_UNKNOWN) { ! num = (int)get_tv_number(&argvars[0]); ! dbpath = get_tv_string(&argvars[1]); if (argvars[2].v_type != VAR_UNKNOWN) ! prepend = get_tv_string_buf(&argvars[2], buf); } rettv->vval.v_number = cs_connection(num, dbpath, prepend); --- 2778,2787 ---- if (argvars[0].v_type != VAR_UNKNOWN && argvars[1].v_type != VAR_UNKNOWN) { ! num = (int)tv_get_number(&argvars[0]); ! dbpath = tv_get_string(&argvars[1]); if (argvars[2].v_type != VAR_UNKNOWN) ! prepend = tv_get_string_buf(&argvars[2], buf); } rettv->vval.v_number = cs_connection(num, dbpath, prepend); *************** *** 2828,2838 **** } else { ! line = get_tv_lnum(argvars); ! col = (long)get_tv_number_chk(&argvars[1], NULL); #ifdef FEAT_VIRTUALEDIT if (argvars[2].v_type != VAR_UNKNOWN) ! coladd = (long)get_tv_number_chk(&argvars[2], NULL); #endif } if (line < 0 || col < 0 --- 2828,2838 ---- } else { ! line = tv_get_lnum(argvars); ! col = (long)tv_get_number_chk(&argvars[1], NULL); #ifdef FEAT_VIRTUALEDIT if (argvars[2].v_type != VAR_UNKNOWN) ! coladd = (long)tv_get_number_chk(&argvars[2], NULL); #endif } if (line < 0 || col < 0 *************** *** 2871,2877 **** int pid; rettv->vval.v_number = FAIL; ! pid = (int)get_tv_number(&argvars[0]); if (pid == 0) EMSG(_(e_invarg)); else --- 2871,2877 ---- int pid; rettv->vval.v_number = FAIL; ! pid = (int)tv_get_number(&argvars[0]); if (pid == 0) EMSG(_(e_invarg)); else *************** *** 2898,2904 **** int copyID; if (argvars[1].v_type != VAR_UNKNOWN) ! noref = (int)get_tv_number_chk(&argvars[1], NULL); if (noref < 0 || noref > 1) EMSG(_(e_invarg)); else --- 2898,2904 ---- int copyID; if (argvars[1].v_type != VAR_UNKNOWN) ! noref = (int)tv_get_number_chk(&argvars[1], NULL); if (noref < 0 || noref > 1) EMSG(_(e_invarg)); else *************** *** 2922,2928 **** if (check_restricted() || check_secure()) return; ! name = get_tv_string(&argvars[0]); if (name == NULL || *name == NUL) { EMSG(_(e_invarg)); --- 2922,2928 ---- if (check_restricted() || check_secure()) return; ! name = tv_get_string(&argvars[0]); if (name == NULL || *name == NUL) { EMSG(_(e_invarg)); *************** *** 2930,2936 **** } if (argvars[1].v_type != VAR_UNKNOWN) ! flags = get_tv_string_buf(&argvars[1], nbuf); else flags = (char_u *)""; --- 2930,2936 ---- } if (argvars[1].v_type != VAR_UNKNOWN) ! flags = tv_get_string_buf(&argvars[1], nbuf); else flags = (char_u *)""; *************** *** 2971,2979 **** } is_curbuf = buf == curbuf; ! first = get_tv_lnum_buf(&argvars[1], buf); if (argvars[2].v_type != VAR_UNKNOWN) ! last = get_tv_lnum_buf(&argvars[2], buf); else last = first; --- 2971,2979 ---- } is_curbuf = buf == curbuf; ! first = tv_get_lnum_buf(&argvars[1], buf); if (argvars[2].v_type != VAR_UNKNOWN) ! last = tv_get_lnum_buf(&argvars[2], buf); else last = first; *************** *** 3048,3054 **** f_diff_filler(typval_T *argvars UNUSED, typval_T *rettv UNUSED) { #ifdef FEAT_DIFF ! rettv->vval.v_number = diff_check_fill(curwin, get_tv_lnum(argvars)); #endif } --- 3048,3054 ---- f_diff_filler(typval_T *argvars UNUSED, typval_T *rettv UNUSED) { #ifdef FEAT_DIFF ! rettv->vval.v_number = diff_check_fill(curwin, tv_get_lnum(argvars)); #endif } *************** *** 3059,3065 **** f_diff_hlID(typval_T *argvars UNUSED, typval_T *rettv UNUSED) { #ifdef FEAT_DIFF ! linenr_T lnum = get_tv_lnum(argvars); static linenr_T prev_lnum = 0; static varnumber_T changedtick = 0; static int fnum = 0; --- 3059,3065 ---- f_diff_hlID(typval_T *argvars UNUSED, typval_T *rettv UNUSED) { #ifdef FEAT_DIFF ! linenr_T lnum = tv_get_lnum(argvars); static linenr_T prev_lnum = 0; static varnumber_T changedtick = 0; static int fnum = 0; *************** *** 3100,3106 **** if (hlID == HLF_CHD || hlID == HLF_TXD) { ! col = get_tv_number(&argvars[1]) - 1; /* ignore type error in {col} */ if (col >= change_start && col <= change_end) hlID = HLF_TXD; /* changed text */ else --- 3100,3106 ---- if (hlID == HLF_CHD || hlID == HLF_TXD) { ! col = tv_get_number(&argvars[1]) - 1; /* ignore type error in {col} */ if (col >= change_start && col <= change_end) hlID = HLF_TXD; /* changed text */ else *************** *** 3177,3184 **** { char_u buf[NUMBUFLEN]; ! rettv->vval.v_string = vim_strsave_escaped(get_tv_string(&argvars[0]), ! get_tv_string_buf(&argvars[1], buf)); rettv->v_type = VAR_STRING; } --- 3177,3184 ---- { char_u buf[NUMBUFLEN]; ! rettv->vval.v_string = vim_strsave_escaped(tv_get_string(&argvars[0]), ! tv_get_string_buf(&argvars[1], buf)); rettv->v_type = VAR_STRING; } *************** *** 3190,3196 **** { char_u *s, *p; ! s = get_tv_string_chk(&argvars[0]); if (s != NULL) s = skipwhite(s); --- 3190,3196 ---- { char_u *s, *p; ! s = tv_get_string_chk(&argvars[0]); if (s != NULL) s = skipwhite(s); *************** *** 3222,3228 **** static void f_executable(typval_T *argvars, typval_T *rettv) { ! char_u *name = get_tv_string(&argvars[0]); /* Check in $PATH and also check directly if there is a directory name. */ rettv->vval.v_number = mch_can_exe(name, NULL, TRUE) --- 3222,3228 ---- static void f_executable(typval_T *argvars, typval_T *rettv) { ! char_u *name = tv_get_string(&argvars[0]); /* Check in $PATH and also check directly if there is a directory name. */ rettv->vval.v_number = mch_can_exe(name, NULL, TRUE) *************** *** 3270,3276 **** if (item == NULL) return NULL; ! s = get_tv_string_buf_chk(&item->li_tv, buf); *p = item->li_next; return s == NULL ? NULL : vim_strsave(s); } --- 3270,3276 ---- if (item == NULL) return NULL; ! s = tv_get_string_buf_chk(&item->li_tv, buf); *p = item->li_next; return s == NULL ? NULL : vim_strsave(s); } *************** *** 3305,3311 **** } else { ! cmd = get_tv_string_chk(&argvars[0]); if (cmd == NULL) return; } --- 3305,3311 ---- } else { ! cmd = tv_get_string_chk(&argvars[0]); if (cmd == NULL) return; } *************** *** 3313,3319 **** if (argvars[1].v_type != VAR_UNKNOWN) { char_u buf[NUMBUFLEN]; ! char_u *s = get_tv_string_buf_chk(&argvars[1], buf); if (s == NULL) return; --- 3313,3319 ---- if (argvars[1].v_type != VAR_UNKNOWN) { char_u buf[NUMBUFLEN]; ! char_u *s = tv_get_string_buf_chk(&argvars[1], buf); if (s == NULL) return; *************** *** 3388,3394 **** { char_u *p = NULL; ! (void)mch_can_exe(get_tv_string(&argvars[0]), &p, TRUE); rettv->v_type = VAR_STRING; rettv->vval.v_string = p; } --- 3388,3394 ---- { char_u *p = NULL; ! (void)mch_can_exe(tv_get_string(&argvars[0]), &p, TRUE); rettv->v_type = VAR_STRING; rettv->vval.v_string = p; } *************** *** 3402,3408 **** char_u *p; int n = FALSE; ! p = get_tv_string(&argvars[0]); if (*p == '$') /* environment variable */ { /* first try "normal" environment variables (fast) */ --- 3402,3408 ---- char_u *p; int n = FALSE; ! p = tv_get_string(&argvars[0]); if (*p == '$') /* environment variable */ { /* first try "normal" environment variables (fast) */ *************** *** 3480,3492 **** rettv->v_type = VAR_STRING; if (argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN ! && get_tv_number_chk(&argvars[2], &error) && !error) { rettv_list_set(rettv, NULL); } ! s = get_tv_string(&argvars[0]); if (*s == '%' || *s == '#' || *s == '<') { ++emsg_off; --- 3480,3492 ---- rettv->v_type = VAR_STRING; if (argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN ! && tv_get_number_chk(&argvars[2], &error) && !error) { rettv_list_set(rettv, NULL); } ! s = tv_get_string(&argvars[0]); if (*s == '%' || *s == '#' || *s == '<') { ++emsg_off; *************** *** 3507,3513 **** /* When the optional second argument is non-zero, don't remove matches * for 'wildignore' and don't put matches for 'suffixes' at the end. */ if (argvars[1].v_type != VAR_UNKNOWN ! && get_tv_number_chk(&argvars[1], &error)) options |= WILD_KEEP_ALL; if (!error) { --- 3507,3513 ---- /* When the optional second argument is non-zero, don't remove matches * for 'wildignore' and don't put matches for 'suffixes' at the end. */ if (argvars[1].v_type != VAR_UNKNOWN ! && tv_get_number_chk(&argvars[1], &error)) options |= WILD_KEEP_ALL; if (!error) { *************** *** 3556,3562 **** { if (argvars[2].v_type != VAR_UNKNOWN) { ! before = (long)get_tv_number_chk(&argvars[2], &error); if (error) return; /* type error; errmsg already given */ --- 3556,3562 ---- { if (argvars[2].v_type != VAR_UNKNOWN) { ! before = (long)tv_get_number_chk(&argvars[2], &error); if (error) return; /* type error; errmsg already given */ *************** *** 3595,3601 **** { static char *(av[]) = {"keep", "force", "error"}; ! action = get_tv_string_chk(&argvars[2]); if (action == NULL) return; /* type error; errmsg already given */ for (i = 0; i < 3; ++i) --- 3595,3601 ---- { static char *(av[]) = {"keep", "force", "error"}; ! action = tv_get_string_chk(&argvars[2]); if (action == NULL) return; /* type error; errmsg already given */ for (i = 0; i < 3; ++i) *************** *** 3640,3650 **** if (check_secure()) return; ! keys = get_tv_string(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN) { ! flags = get_tv_string_buf(&argvars[1], nbuf); for ( ; *flags != NUL; ++flags) { switch (*flags) --- 3640,3650 ---- if (check_secure()) return; ! keys = tv_get_string(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN) { ! flags = tv_get_string_buf(&argvars[1], nbuf); for ( ; *flags != NUL; ++flags) { switch (*flags) *************** *** 3707,3713 **** #ifndef O_NONBLOCK # define O_NONBLOCK 0 #endif ! p = get_tv_string(&argvars[0]); if (*p && !mch_isdir(p) && (fd = mch_open((char *)p, O_RDONLY | O_NONBLOCK, 0)) >= 0) { --- 3707,3713 ---- #ifndef O_NONBLOCK # define O_NONBLOCK 0 #endif ! p = tv_get_string(&argvars[0]); if (*p && !mch_isdir(p) && (fd = mch_open((char *)p, O_RDONLY | O_NONBLOCK, 0)) >= 0) { *************** *** 3727,3733 **** static void f_filewritable(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = filewritable(get_tv_string(&argvars[0])); } static void --- 3727,3733 ---- static void f_filewritable(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = filewritable(tv_get_string(&argvars[0])); } static void *************** *** 3751,3761 **** rettv->v_type = VAR_STRING; #ifdef FEAT_SEARCHPATH ! fname = get_tv_string(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN) { ! p = get_tv_string_buf_chk(&argvars[1], pathbuf); if (p == NULL) error = TRUE; else --- 3751,3761 ---- rettv->v_type = VAR_STRING; #ifdef FEAT_SEARCHPATH ! fname = tv_get_string(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN) { ! p = tv_get_string_buf_chk(&argvars[1], pathbuf); if (p == NULL) error = TRUE; else *************** *** 3764,3770 **** path = p; if (argvars[2].v_type != VAR_UNKNOWN) ! count = (int)get_tv_number_chk(&argvars[2], &error); } } --- 3764,3770 ---- path = p; if (argvars[2].v_type != VAR_UNKNOWN) ! count = (int)tv_get_number_chk(&argvars[2], &error); } } *************** *** 3883,3889 **** f_fnameescape(typval_T *argvars, typval_T *rettv) { rettv->vval.v_string = vim_strsave_fnameescape( ! get_tv_string(&argvars[0]), FALSE); rettv->v_type = VAR_STRING; } --- 3883,3889 ---- f_fnameescape(typval_T *argvars, typval_T *rettv) { rettv->vval.v_string = vim_strsave_fnameescape( ! tv_get_string(&argvars[0]), FALSE); rettv->v_type = VAR_STRING; } *************** *** 3900,3907 **** char_u *fbuf = NULL; char_u buf[NUMBUFLEN]; ! fname = get_tv_string_chk(&argvars[0]); ! mods = get_tv_string_buf_chk(&argvars[1], buf); if (fname == NULL || mods == NULL) fname = NULL; else --- 3900,3907 ---- char_u *fbuf = NULL; char_u buf[NUMBUFLEN]; ! fname = tv_get_string_chk(&argvars[0]); ! mods = tv_get_string_buf_chk(&argvars[1], buf); if (fname == NULL || mods == NULL) fname = NULL; else *************** *** 3931,3937 **** linenr_T lnum; linenr_T first, last; ! lnum = get_tv_lnum(argvars); if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count) { if (hasFoldingWin(curwin, lnum, &first, &last, FALSE, NULL)) --- 3931,3937 ---- linenr_T lnum; linenr_T first, last; ! lnum = tv_get_lnum(argvars); if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count) { if (hasFoldingWin(curwin, lnum, &first, &last, FALSE, NULL)) *************** *** 3974,3980 **** #ifdef FEAT_FOLDING linenr_T lnum; ! lnum = get_tv_lnum(argvars); if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count) rettv->vval.v_number = foldLevel(lnum); #endif --- 3974,3980 ---- #ifdef FEAT_FOLDING linenr_T lnum; ! lnum = tv_get_lnum(argvars); if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count) rettv->vval.v_number = foldLevel(lnum); #endif *************** *** 4067,4073 **** return; /* reject recursive use */ entered = TRUE; ! lnum = get_tv_lnum(argvars); /* treat illegal types and illegal string values for {lnum} the same */ if (lnum < 0) lnum = 0; --- 4067,4073 ---- return; /* reject recursive use */ entered = TRUE; ! lnum = tv_get_lnum(argvars); /* treat illegal types and illegal string values for {lnum} the same */ if (lnum < 0) lnum = 0; *************** *** 4125,4131 **** else { /* function('MyFunc', [arg], dict) */ ! s = get_tv_string(&argvars[0]); use_string = TRUE; } --- 4125,4131 ---- else { /* function('MyFunc', [arg], dict) */ ! s = tv_get_string(&argvars[0]); use_string = TRUE; } *************** *** 4140,4146 **** if (s == NULL || *s == NUL || (use_string && VIM_ISDIGIT(*s)) || (is_funcref && trans_name == NULL)) ! EMSG2(_(e_invarg2), use_string ? get_tv_string(&argvars[0]) : s); /* Don't check an autoload name for existence here. */ else if (trans_name != NULL && (is_funcref ? find_func(trans_name) == NULL --- 4140,4146 ---- if (s == NULL || *s == NUL || (use_string && VIM_ISDIGIT(*s)) || (is_funcref && trans_name == NULL)) ! EMSG2(_(e_invarg2), use_string ? tv_get_string(&argvars[0]) : s); /* Don't check an autoload name for existence here. */ else if (trans_name != NULL && (is_funcref ? find_func(trans_name) == NULL *************** *** 4327,4333 **** * using Lists and Dicts internally. E.g.: ":echo [garbagecollect()]". */ want_garbage_collect = TRUE; ! if (argvars[0].v_type != VAR_UNKNOWN && get_tv_number(&argvars[0]) == 1) garbage_collect_at_exit = TRUE; } --- 4327,4333 ---- * using Lists and Dicts internally. E.g.: ":echo [garbagecollect()]". */ want_garbage_collect = TRUE; ! if (argvars[0].v_type != VAR_UNKNOWN && tv_get_number(&argvars[0]) == 1) garbage_collect_at_exit = TRUE; } *************** *** 4349,4355 **** { int error = FALSE; ! li = list_find(l, (long)get_tv_number_chk(&argvars[1], &error)); if (!error && li != NULL) tv = &li->li_tv; } --- 4349,4355 ---- { int error = FALSE; ! li = list_find(l, (long)tv_get_number_chk(&argvars[1], &error)); if (!error && li != NULL) tv = &li->li_tv; } *************** *** 4358,4364 **** { if ((d = argvars[0].vval.v_dict) != NULL) { ! di = dict_find(d, get_tv_string(&argvars[1]), -1); if (di != NULL) tv = &di->di_tv; } --- 4358,4364 ---- { if ((d = argvars[0].vval.v_dict) != NULL) { ! di = dict_find(d, tv_get_string(&argvars[1]), -1); if (di != NULL) tv = &di->di_tv; } *************** *** 4379,4385 **** if (pt != NULL) { ! char_u *what = get_tv_string(&argvars[1]); char_u *n; if (STRCMP(what, "func") == 0 || STRCMP(what, "name") == 0) --- 4379,4385 ---- if (pt != NULL) { ! char_u *what = tv_get_string(&argvars[1]); char_u *n; if (STRCMP(what, "func") == 0 || STRCMP(what, "name") == 0) *************** *** 4527,4548 **** filtered = TRUE; di = dict_find(sel_d, (char_u *)"buflisted", -1); ! if (di != NULL && get_tv_number(&di->di_tv)) sel_buflisted = TRUE; di = dict_find(sel_d, (char_u *)"bufloaded", -1); ! if (di != NULL && get_tv_number(&di->di_tv)) sel_bufloaded = TRUE; di = dict_find(sel_d, (char_u *)"bufmodified", -1); ! if (di != NULL && get_tv_number(&di->di_tv)) sel_bufmodified = TRUE; } } else if (argvars[0].v_type != VAR_UNKNOWN) { /* Information about one buffer. Argument specifies the buffer */ ! (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; argbuf = get_buf_tv(&argvars[0], FALSE); --emsg_off; --- 4527,4548 ---- filtered = TRUE; di = dict_find(sel_d, (char_u *)"buflisted", -1); ! if (di != NULL && tv_get_number(&di->di_tv)) sel_buflisted = TRUE; di = dict_find(sel_d, (char_u *)"bufloaded", -1); ! if (di != NULL && tv_get_number(&di->di_tv)) sel_bufloaded = TRUE; di = dict_find(sel_d, (char_u *)"bufmodified", -1); ! if (di != NULL && tv_get_number(&di->di_tv)) sel_bufmodified = TRUE; } } else if (argvars[0].v_type != VAR_UNKNOWN) { /* Information about one buffer. Argument specifies the buffer */ ! (void)tv_get_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; argbuf = get_buf_tv(&argvars[0], FALSE); --emsg_off; *************** *** 4626,4641 **** linenr_T end; buf_T *buf; ! (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; buf = get_buf_tv(&argvars[0], FALSE); --emsg_off; ! lnum = get_tv_lnum_buf(&argvars[1], buf); if (argvars[2].v_type == VAR_UNKNOWN) end = lnum; else ! end = get_tv_lnum_buf(&argvars[2], buf); get_buffer_lines(buf, lnum, end, TRUE, rettv); } --- 4626,4641 ---- linenr_T end; buf_T *buf; ! (void)tv_get_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; buf = get_buf_tv(&argvars[0], FALSE); --emsg_off; ! lnum = tv_get_lnum_buf(&argvars[1], buf); if (argvars[2].v_type == VAR_UNKNOWN) end = lnum; else ! end = tv_get_lnum_buf(&argvars[2], buf); get_buffer_lines(buf, lnum, end, TRUE, rettv); } *************** *** 4652,4659 **** dictitem_T *v; int done = FALSE; ! (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ ! varname = get_tv_string_chk(&argvars[1]); ++emsg_off; buf = get_buf_tv(&argvars[0], FALSE); --- 4652,4659 ---- dictitem_T *v; int done = FALSE; ! (void)tv_get_number(&argvars[0]); /* issue errmsg if type error */ ! varname = tv_get_string_chk(&argvars[1]); ++emsg_off; buf = get_buf_tv(&argvars[0], FALSE); *************** *** 4724,4730 **** return; #ifdef FEAT_JUMPLIST ! (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; buf = get_buf_tv(&argvars[0], FALSE); --emsg_off; --- 4724,4730 ---- return; #ifdef FEAT_JUMPLIST ! (void)tv_get_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; buf = get_buf_tv(&argvars[0], FALSE); --emsg_off; *************** *** 4788,4794 **** if (argvars[0].v_type == VAR_UNKNOWN) /* getchar(): blocking wait. */ n = plain_vgetc(); ! else if (get_tv_number_chk(&argvars[0], &error) == 1) /* getchar(1): only check if char avail */ n = vpeekc_any(); else if (error || vpeekc_any() == NUL) --- 4788,4794 ---- if (argvars[0].v_type == VAR_UNKNOWN) /* getchar(): blocking wait. */ n = plain_vgetc(); ! else if (tv_get_number_chk(&argvars[0], &error) == 1) /* getchar(1): only check if char avail */ n = vpeekc_any(); else if (error || vpeekc_any() == NUL) *************** *** 4960,4966 **** | WILD_NO_BEEP; if (argvars[2].v_type != VAR_UNKNOWN) ! filtered = get_tv_number_chk(&argvars[2], NULL); if (p_wic) options |= WILD_ICASE; --- 4960,4966 ---- | WILD_NO_BEEP; if (argvars[2].v_type != VAR_UNKNOWN) ! filtered = tv_get_number_chk(&argvars[2], NULL); if (p_wic) options |= WILD_ICASE; *************** *** 4970,4978 **** options |= WILD_KEEP_ALL; ExpandInit(&xpc); ! xpc.xp_pattern = get_tv_string(&argvars[0]); xpc.xp_pattern_len = (int)STRLEN(xpc.xp_pattern); ! xpc.xp_context = cmdcomplete_str_to_type(get_tv_string(&argvars[1])); if (xpc.xp_context == EXPAND_NOTHING) { if (argvars[1].v_type == VAR_STRING) --- 4970,4978 ---- options |= WILD_KEEP_ALL; ExpandInit(&xpc); ! xpc.xp_pattern = tv_get_string(&argvars[0]); xpc.xp_pattern_len = (int)STRLEN(xpc.xp_pattern); ! xpc.xp_context = cmdcomplete_str_to_type(tv_get_string(&argvars[1])); if (xpc.xp_context == EXPAND_NOTHING) { if (argvars[1].v_type == VAR_STRING) *************** *** 5083,5089 **** } else { ! name = get_tv_string(&argvars[0]); if (STRCMP(name, "*") == 0) /* don't use font dialog */ return; font = gui_mch_get_font(name, FALSE); --- 5083,5089 ---- } else { ! name = tv_get_string(&argvars[0]); if (STRCMP(name, "*") == 0) /* don't use font dialog */ return; font = gui_mch_get_font(name, FALSE); *************** *** 5109,5115 **** char_u flags[] = "rwx"; int i; ! fname = get_tv_string(&argvars[0]); rettv->v_type = VAR_STRING; if (mch_stat((char *)fname, &st) >= 0) --- 5109,5115 ---- char_u flags[] = "rwx"; int i; ! fname = tv_get_string(&argvars[0]); rettv->v_type = VAR_STRING; if (mch_stat((char *)fname, &st) >= 0) *************** *** 5136,5142 **** char_u *fname; stat_T st; ! fname = get_tv_string(&argvars[0]); rettv->v_type = VAR_NUMBER; --- 5136,5142 ---- char_u *fname; stat_T st; ! fname = tv_get_string(&argvars[0]); rettv->v_type = VAR_NUMBER; *************** *** 5166,5172 **** char_u *fname; stat_T st; ! fname = get_tv_string(&argvars[0]); if (mch_stat((char *)fname, &st) >= 0) rettv->vval.v_number = (varnumber_T)st.st_mtime; --- 5166,5172 ---- char_u *fname; stat_T st; ! fname = tv_get_string(&argvars[0]); if (mch_stat((char *)fname, &st) >= 0) rettv->vval.v_number = (varnumber_T)st.st_mtime; *************** *** 5185,5191 **** char_u *type = NULL; char *t; ! fname = get_tv_string(&argvars[0]); rettv->v_type = VAR_STRING; if (mch_lstat((char *)fname, &st) >= 0) --- 5185,5191 ---- char_u *type = NULL; char *t; ! fname = tv_get_string(&argvars[0]); rettv->v_type = VAR_STRING; if (mch_lstat((char *)fname, &st) >= 0) *************** *** 5272,5278 **** linenr_T end; int retlist; ! lnum = get_tv_lnum(argvars); if (argvars[1].v_type == VAR_UNKNOWN) { end = 0; --- 5272,5278 ---- linenr_T end; int retlist; ! lnum = tv_get_lnum(argvars); if (argvars[1].v_type == VAR_UNKNOWN) { end = 0; *************** *** 5280,5286 **** } else { ! end = get_tv_lnum(&argvars[1]); retlist = TRUE; } --- 5280,5286 ---- } else { ! end = tv_get_lnum(&argvars[1]); retlist = TRUE; } *************** *** 5490,5502 **** if (argvars[0].v_type != VAR_UNKNOWN) { ! strregname = get_tv_string_chk(&argvars[0]); error = strregname == NULL; if (argvars[1].v_type != VAR_UNKNOWN) { ! arg2 = (int)get_tv_number_chk(&argvars[1], &error); if (!error && argvars[2].v_type != VAR_UNKNOWN) ! return_list = (int)get_tv_number_chk(&argvars[2], &error); } } else --- 5490,5502 ---- if (argvars[0].v_type != VAR_UNKNOWN) { ! strregname = tv_get_string_chk(&argvars[0]); error = strregname == NULL; if (argvars[1].v_type != VAR_UNKNOWN) { ! arg2 = (int)tv_get_number_chk(&argvars[1], &error); if (!error && argvars[2].v_type != VAR_UNKNOWN) ! return_list = (int)tv_get_number_chk(&argvars[2], &error); } } else *************** *** 5540,5546 **** if (argvars[0].v_type != VAR_UNKNOWN) { ! strregname = get_tv_string_chk(&argvars[0]); if (strregname == NULL) /* type error; errmsg already given */ { rettv->v_type = VAR_STRING; --- 5540,5546 ---- if (argvars[0].v_type != VAR_UNKNOWN) { ! strregname = tv_get_string_chk(&argvars[0]); if (strregname == NULL) /* type error; errmsg already given */ { rettv->v_type = VAR_STRING; *************** *** 5619,5625 **** if (argvars[0].v_type != VAR_UNKNOWN) { /* Information about one tab page */ ! tparg = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL)); if (tparg == NULL) return; } --- 5619,5625 ---- if (argvars[0].v_type != VAR_UNKNOWN) { /* Information about one tab page */ ! tparg = find_tabpage((int)tv_get_number_chk(&argvars[0], NULL)); if (tparg == NULL) return; } *************** *** 5653,5660 **** rettv->v_type = VAR_STRING; rettv->vval.v_string = NULL; ! varname = get_tv_string_chk(&argvars[1]); ! tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL)); if (tp != NULL && varname != NULL) { /* Set tp to be our tabpage, temporarily. Also set the window to the --- 5653,5660 ---- rettv->v_type = VAR_STRING; rettv->vval.v_string = NULL; ! varname = tv_get_string_chk(&argvars[1]); ! tp = find_tabpage((int)tv_get_number_chk(&argvars[0], NULL)); if (tp != NULL && varname != NULL) { /* Set tp to be our tabpage, temporarily. Also set the window to the *************** *** 5879,5885 **** varnumber_T timeout = 100; if (argvars[0].v_type != VAR_UNKNOWN) ! timeout = get_tv_number(&argvars[0]); term_get_winpos(&x, &y, timeout); } #endif --- 5879,5885 ---- varnumber_T timeout = 100; if (argvars[0].v_type != VAR_UNKNOWN) ! timeout = tv_get_number(&argvars[0]); term_get_winpos(&x, &y, timeout); } #endif *************** *** 5966,5981 **** rettv->v_type = VAR_STRING; if (argvars[1].v_type != VAR_UNKNOWN) { ! if (get_tv_number_chk(&argvars[1], &error)) options |= WILD_KEEP_ALL; if (argvars[2].v_type != VAR_UNKNOWN) { ! if (get_tv_number_chk(&argvars[2], &error)) { rettv_list_set(rettv, NULL); } if (argvars[3].v_type != VAR_UNKNOWN ! && get_tv_number_chk(&argvars[3], &error)) options |= WILD_ALLLINKS; } } --- 5966,5981 ---- rettv->v_type = VAR_STRING; if (argvars[1].v_type != VAR_UNKNOWN) { ! if (tv_get_number_chk(&argvars[1], &error)) options |= WILD_KEEP_ALL; if (argvars[2].v_type != VAR_UNKNOWN) { ! if (tv_get_number_chk(&argvars[2], &error)) { rettv_list_set(rettv, NULL); } if (argvars[3].v_type != VAR_UNKNOWN ! && tv_get_number_chk(&argvars[3], &error)) options |= WILD_ALLLINKS; } } *************** *** 5986,5998 **** if (p_wic) options += WILD_ICASE; if (rettv->v_type == VAR_STRING) ! rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]), NULL, options, WILD_ALL); else if (rettv_list_alloc(rettv) != FAIL) { int i; ! ExpandOne(&xpc, get_tv_string(&argvars[0]), NULL, options, WILD_ALL_KEEP); for (i = 0; i < xpc.xp_numfiles; i++) list_append_string(rettv->vval.v_list, xpc.xp_files[i], -1); --- 5986,5998 ---- if (p_wic) options += WILD_ICASE; if (rettv->v_type == VAR_STRING) ! rettv->vval.v_string = ExpandOne(&xpc, tv_get_string(&argvars[0]), NULL, options, WILD_ALL); else if (rettv_list_alloc(rettv) != FAIL) { int i; ! ExpandOne(&xpc, tv_get_string(&argvars[0]), NULL, options, WILD_ALL_KEEP); for (i = 0; i < xpc.xp_numfiles; i++) list_append_string(rettv->vval.v_list, xpc.xp_files[i], -1); *************** *** 6012,6018 **** { int flags = 0; char_u buf1[NUMBUFLEN]; ! char_u *file = get_tv_string_buf_chk(&argvars[1], buf1); int error = FALSE; garray_T ga; int i; --- 6012,6018 ---- { int flags = 0; char_u buf1[NUMBUFLEN]; ! char_u *file = tv_get_string_buf_chk(&argvars[1], buf1); int error = FALSE; garray_T ga; int i; *************** *** 6022,6044 **** rettv->v_type = VAR_STRING; if (argvars[2].v_type != VAR_UNKNOWN) { ! if (get_tv_number_chk(&argvars[2], &error)) flags |= WILD_KEEP_ALL; if (argvars[3].v_type != VAR_UNKNOWN) { ! if (get_tv_number_chk(&argvars[3], &error)) { rettv_list_set(rettv, NULL); } if (argvars[4].v_type != VAR_UNKNOWN ! && get_tv_number_chk(&argvars[4], &error)) flags |= WILD_ALLLINKS; } } if (file != NULL && !error) { ga_init2(&ga, (int)sizeof(char_u *), 10); ! globpath(get_tv_string(&argvars[0]), file, &ga, flags); if (rettv->v_type == VAR_STRING) rettv->vval.v_string = ga_concat_strings(&ga, "\n"); else if (rettv_list_alloc(rettv) != FAIL) --- 6022,6044 ---- rettv->v_type = VAR_STRING; if (argvars[2].v_type != VAR_UNKNOWN) { ! if (tv_get_number_chk(&argvars[2], &error)) flags |= WILD_KEEP_ALL; if (argvars[3].v_type != VAR_UNKNOWN) { ! if (tv_get_number_chk(&argvars[3], &error)) { rettv_list_set(rettv, NULL); } if (argvars[4].v_type != VAR_UNKNOWN ! && tv_get_number_chk(&argvars[4], &error)) flags |= WILD_ALLLINKS; } } if (file != NULL && !error) { ga_init2(&ga, (int)sizeof(char_u *), 10); ! globpath(tv_get_string(&argvars[0]), file, &ga, flags); if (rettv->v_type == VAR_STRING) rettv->vval.v_string = ga_concat_strings(&ga, "\n"); else if (rettv_list_alloc(rettv) != FAIL) *************** *** 6057,6063 **** static void f_glob2regpat(typval_T *argvars, typval_T *rettv) { ! char_u *pat = get_tv_string_chk(&argvars[0]); rettv->v_type = VAR_STRING; rettv->vval.v_string = (pat == NULL) --- 6057,6063 ---- static void f_glob2regpat(typval_T *argvars, typval_T *rettv) { ! char_u *pat = tv_get_string_chk(&argvars[0]); rettv->v_type = VAR_STRING; rettv->vval.v_string = (pat == NULL) *************** *** 6583,6589 **** NULL }; ! name = get_tv_string(&argvars[0]); for (i = 0; has_list[i] != NULL; ++i) if (STRICMP(name, has_list[i]) == 0) { --- 6583,6589 ---- NULL }; ! name = tv_get_string(&argvars[0]); for (i = 0; has_list[i] != NULL; ++i) if (STRICMP(name, has_list[i]) == 0) { *************** *** 6721,6727 **** return; rettv->vval.v_number = dict_find(argvars[0].vval.v_dict, ! get_tv_string(&argvars[1]), -1) != NULL; } /* --- 6721,6727 ---- return; rettv->vval.v_number = dict_find(argvars[0].vval.v_dict, ! tv_get_string(&argvars[1]), -1) != NULL; } /* *************** *** 6747,6760 **** char_u buf[NUMBUFLEN]; int abbr = FALSE; ! name = get_tv_string(&argvars[0]); if (argvars[1].v_type == VAR_UNKNOWN) mode = (char_u *)"nvo"; else { ! mode = get_tv_string_buf(&argvars[1], buf); if (argvars[2].v_type != VAR_UNKNOWN) ! abbr = (int)get_tv_number(&argvars[2]); } if (map_to_exists(name, mode, abbr)) --- 6747,6760 ---- char_u buf[NUMBUFLEN]; int abbr = FALSE; ! name = tv_get_string(&argvars[0]); if (argvars[1].v_type == VAR_UNKNOWN) mode = (char_u *)"nvo"; else { ! mode = tv_get_string_buf(&argvars[1], buf); if (argvars[2].v_type != VAR_UNKNOWN) ! abbr = (int)tv_get_number(&argvars[2]); } if (map_to_exists(name, mode, abbr)) *************** *** 6779,6789 **** if (check_restricted() || check_secure()) return; #ifdef FEAT_CMDHIST ! str = get_tv_string_chk(&argvars[0]); /* NULL on type error */ histype = str != NULL ? get_histtype(str) : -1; if (histype >= 0) { ! str = get_tv_string_buf(&argvars[1], buf); if (*str != NUL) { init_history(); --- 6779,6789 ---- if (check_restricted() || check_secure()) return; #ifdef FEAT_CMDHIST ! str = tv_get_string_chk(&argvars[0]); /* NULL on type error */ histype = str != NULL ? get_histtype(str) : -1; if (histype >= 0) { ! str = tv_get_string_buf(&argvars[1], buf); if (*str != NUL) { init_history(); *************** *** 6806,6812 **** char_u buf[NUMBUFLEN]; char_u *str; ! str = get_tv_string_chk(&argvars[0]); /* NULL on type error */ if (str == NULL) n = 0; else if (argvars[1].v_type == VAR_UNKNOWN) --- 6806,6812 ---- char_u buf[NUMBUFLEN]; char_u *str; ! str = tv_get_string_chk(&argvars[0]); /* NULL on type error */ if (str == NULL) n = 0; else if (argvars[1].v_type == VAR_UNKNOWN) *************** *** 6815,6825 **** else if (argvars[1].v_type == VAR_NUMBER) /* index given: remove that entry */ n = del_history_idx(get_histtype(str), ! (int)get_tv_number(&argvars[1])); else /* string given: remove all matching entries */ n = del_history_entry(get_histtype(str), ! get_tv_string_buf(&argvars[1], buf)); rettv->vval.v_number = n; #endif } --- 6815,6825 ---- else if (argvars[1].v_type == VAR_NUMBER) /* index given: remove that entry */ n = del_history_idx(get_histtype(str), ! (int)tv_get_number(&argvars[1])); else /* string given: remove all matching entries */ n = del_history_entry(get_histtype(str), ! tv_get_string_buf(&argvars[1], buf)); rettv->vval.v_number = n; #endif } *************** *** 6835,6841 **** int idx; char_u *str; ! str = get_tv_string_chk(&argvars[0]); /* NULL on type error */ if (str == NULL) rettv->vval.v_string = NULL; else --- 6835,6841 ---- int idx; char_u *str; ! str = tv_get_string_chk(&argvars[0]); /* NULL on type error */ if (str == NULL) rettv->vval.v_string = NULL; else *************** *** 6844,6850 **** if (argvars[1].v_type == VAR_UNKNOWN) idx = get_history_idx(type); else ! idx = (int)get_tv_number_chk(&argvars[1], NULL); /* -1 on type error */ rettv->vval.v_string = vim_strsave(get_history_entry(type, idx)); } --- 6844,6850 ---- if (argvars[1].v_type == VAR_UNKNOWN) idx = get_history_idx(type); else ! idx = (int)tv_get_number_chk(&argvars[1], NULL); /* -1 on type error */ rettv->vval.v_string = vim_strsave(get_history_entry(type, idx)); } *************** *** 6863,6869 **** int i; #ifdef FEAT_CMDHIST ! char_u *history = get_tv_string_chk(&argvars[0]); i = history == NULL ? HIST_CMD - 1 : get_histtype(history); if (i >= HIST_CMD && i < HIST_COUNT) --- 6863,6869 ---- int i; #ifdef FEAT_CMDHIST ! char_u *history = tv_get_string_chk(&argvars[0]); i = history == NULL ? HIST_CMD - 1 : get_histtype(history); if (i >= HIST_CMD && i < HIST_COUNT) *************** *** 6880,6886 **** static void f_hlID(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = syn_name2id(get_tv_string(&argvars[0])); } /* --- 6880,6886 ---- static void f_hlID(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = syn_name2id(tv_get_string(&argvars[0])); } /* *************** *** 6889,6895 **** static void f_hlexists(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = highlight_exists(get_tv_string(&argvars[0])); } /* --- 6889,6895 ---- static void f_hlexists(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = highlight_exists(tv_get_string(&argvars[0])); } /* *************** *** 6922,6930 **** rettv->vval.v_string = NULL; #ifdef FEAT_MBYTE ! str = get_tv_string(&argvars[0]); ! from = enc_canonize(enc_skip(get_tv_string_buf(&argvars[1], buf1))); ! to = enc_canonize(enc_skip(get_tv_string_buf(&argvars[2], buf2))); vimconv.vc_type = CONV_NONE; convert_setup(&vimconv, from, to); --- 6922,6930 ---- rettv->vval.v_string = NULL; #ifdef FEAT_MBYTE ! str = tv_get_string(&argvars[0]); ! from = enc_canonize(enc_skip(tv_get_string_buf(&argvars[1], buf1))); ! to = enc_canonize(enc_skip(tv_get_string_buf(&argvars[2], buf2))); vimconv.vc_type = CONV_NONE; convert_setup(&vimconv, from, to); *************** *** 6948,6954 **** { linenr_T lnum; ! lnum = get_tv_lnum(argvars); if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count) rettv->vval.v_number = get_indent_lnum(lnum); else --- 6948,6954 ---- { linenr_T lnum; ! lnum = tv_get_lnum(argvars); if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count) rettv->vval.v_number = get_indent_lnum(lnum); else *************** *** 6982,6991 **** /* Start at specified item. Use the cached index that list_find() * sets, so that a negative number also works. */ ! item = list_find(l, (long)get_tv_number_chk(&argvars[2], &error)); idx = l->lv_idx; if (argvars[3].v_type != VAR_UNKNOWN) ! ic = (int)get_tv_number_chk(&argvars[3], &error); if (error) item = NULL; } --- 6982,6991 ---- /* Start at specified item. Use the cached index that list_find() * sets, so that a negative number also works. */ ! item = list_find(l, (long)tv_get_number_chk(&argvars[2], &error)); idx = l->lv_idx; if (argvars[3].v_type != VAR_UNKNOWN) ! ic = (int)tv_get_number_chk(&argvars[3], &error); if (error) item = NULL; } *************** *** 7025,7033 **** char_u buf[NUMBUFLEN]; char_u *defstr = (char_u *)""; ! message = get_tv_string_chk(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN ! && (defstr = get_tv_string_buf_chk(&argvars[1], buf)) != NULL) vim_strncpy(IObuff, defstr, IOSIZE - 1); else IObuff[0] = NUL; --- 7025,7033 ---- char_u buf[NUMBUFLEN]; char_u *defstr = (char_u *)""; ! message = tv_get_string_chk(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN ! && (defstr = tv_get_string_buf_chk(&argvars[1], buf)) != NULL) vim_strncpy(IObuff, defstr, IOSIZE - 1); else IObuff[0] = NUL; *************** *** 7041,7047 **** && argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN) rettv->vval.v_string = vim_strsave( ! get_tv_string_buf(&argvars[2], buf)); else rettv->vval.v_string = NULL; } --- 7041,7047 ---- && argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN) rettv->vval.v_string = vim_strsave( ! tv_get_string_buf(&argvars[2], buf)); else rettv->vval.v_string = NULL; } *************** *** 7082,7088 **** for (li = argvars[0].vval.v_list->lv_first; li != NULL; li = li->li_next) { ! msg_puts(get_tv_string(&li->li_tv)); msg_putchar('\n'); } --- 7082,7088 ---- for (li = argvars[0].vval.v_list->lv_first; li != NULL; li = li->li_next) { ! msg_puts(tv_get_string(&li->li_tv)); msg_putchar('\n'); } *************** *** 7164,7170 **** && !tv_check_lock(l->lv_lock, (char_u *)N_("insert() argument"), TRUE)) { if (argvars[2].v_type != VAR_UNKNOWN) ! before = (long)get_tv_number_chk(&argvars[2], &error); if (error) return; /* type error; errmsg already given */ --- 7164,7170 ---- && !tv_check_lock(l->lv_lock, (char_u *)N_("insert() argument"), TRUE)) { if (argvars[2].v_type != VAR_UNKNOWN) ! before = (long)tv_get_number_chk(&argvars[2], &error); if (error) return; /* type error; errmsg already given */ *************** *** 7193,7199 **** static void f_invert(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = ~get_tv_number_chk(&argvars[0], NULL); } /* --- 7193,7199 ---- static void f_invert(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = ~tv_get_number_chk(&argvars[0], NULL); } /* *************** *** 7202,7208 **** static void f_isdirectory(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = mch_isdir(get_tv_string(&argvars[0])); } /* --- 7202,7208 ---- static void f_isdirectory(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = mch_isdir(tv_get_string(&argvars[0])); } /* *************** *** 7232,7238 **** dictitem_T *di; rettv->vval.v_number = -1; ! end = get_lval(get_tv_string(&argvars[0]), NULL, &lv, FALSE, FALSE, GLV_NO_AUTOLOAD | GLV_READ_ONLY, FNE_CHECK_START); if (end != NULL && lv.ll_name != NULL) { --- 7232,7238 ---- dictitem_T *di; rettv->vval.v_number = -1; ! end = get_lval(tv_get_string(&argvars[0]), NULL, &lv, FALSE, FALSE, GLV_NO_AUTOLOAD | GLV_READ_ONLY, FNE_CHECK_START); if (end != NULL && lv.ll_name != NULL) { *************** *** 7303,7309 **** if (tv->v_type != VAR_JOB) { ! EMSG2(_(e_invarg2), get_tv_string(tv)); return NULL; } job = tv->vval.v_job; --- 7303,7309 ---- if (tv->v_type != VAR_JOB) { ! EMSG2(_(e_invarg2), tv_get_string(tv)); return NULL; } job = tv->vval.v_job; *************** *** 7423,7429 **** if (argvars[1].v_type == VAR_UNKNOWN) sep = (char_u *)" "; else ! sep = get_tv_string_chk(&argvars[1]); rettv->v_type = VAR_STRING; --- 7423,7429 ---- if (argvars[1].v_type == VAR_UNKNOWN) sep = (char_u *)" "; else ! sep = tv_get_string_chk(&argvars[1]); rettv->v_type = VAR_STRING; *************** *** 7446,7452 **** { js_read_T reader; ! reader.js_buf = get_tv_string(&argvars[0]); reader.js_fill = NULL; reader.js_used = 0; if (json_decode_all(&reader, rettv, JSON_JS) != OK) --- 7446,7452 ---- { js_read_T reader; ! reader.js_buf = tv_get_string(&argvars[0]); reader.js_fill = NULL; reader.js_used = 0; if (json_decode_all(&reader, rettv, JSON_JS) != OK) *************** *** 7471,7477 **** { js_read_T reader; ! reader.js_buf = get_tv_string(&argvars[0]); reader.js_fill = NULL; reader.js_used = 0; json_decode_all(&reader, rettv, 0); --- 7471,7477 ---- { js_read_T reader; ! reader.js_buf = tv_get_string(&argvars[0]); reader.js_fill = NULL; reader.js_used = 0; json_decode_all(&reader, rettv, 0); *************** *** 7523,7529 **** case VAR_STRING: case VAR_NUMBER: rettv->vval.v_number = (varnumber_T)STRLEN( ! get_tv_string(&argvars[0])); break; case VAR_LIST: rettv->vval.v_number = list_len(argvars[0].vval.v_list); --- 7523,7529 ---- case VAR_STRING: case VAR_NUMBER: rettv->vval.v_number = (varnumber_T)STRLEN( ! tv_get_string(&argvars[0])); break; case VAR_LIST: rettv->vval.v_number = list_len(argvars[0].vval.v_list); *************** *** 7627,7633 **** #else linenr_T lnum; ! lnum = get_tv_lnum(argvars); if (lnum < 1 || lnum > curbuf->b_ml.ml_line_count + 1) rettv->vval.v_number = -1; else --- 7627,7633 ---- #else linenr_T lnum; ! lnum = tv_get_lnum(argvars); if (lnum < 1 || lnum > curbuf->b_ml.ml_line_count + 1) rettv->vval.v_number = -1; else *************** *** 7648,7654 **** linenr_T lnum; pos = curwin->w_cursor; ! lnum = get_tv_lnum(argvars); if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count) { curwin->w_cursor.lnum = lnum; --- 7648,7654 ---- linenr_T lnum; pos = curwin->w_cursor; ! lnum = tv_get_lnum(argvars); if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count) { curwin->w_cursor.lnum = lnum; *************** *** 7687,7704 **** rettv->v_type = VAR_STRING; rettv->vval.v_string = NULL; ! keys = get_tv_string(&argvars[0]); if (*keys == NUL) return; if (argvars[1].v_type != VAR_UNKNOWN) { ! which = get_tv_string_buf_chk(&argvars[1], buf); if (argvars[2].v_type != VAR_UNKNOWN) { ! abbr = (int)get_tv_number(&argvars[2]); if (argvars[3].v_type != VAR_UNKNOWN) ! get_dict = (int)get_tv_number(&argvars[3]); } } else --- 7687,7704 ---- rettv->v_type = VAR_STRING; rettv->vval.v_string = NULL; ! keys = tv_get_string(&argvars[0]); if (*keys == NUL) return; if (argvars[1].v_type != VAR_UNKNOWN) { ! which = tv_get_string_buf_chk(&argvars[1], buf); if (argvars[2].v_type != VAR_UNKNOWN) { ! abbr = (int)tv_get_number(&argvars[2]); if (argvars[3].v_type != VAR_UNKNOWN) ! get_dict = (int)tv_get_number(&argvars[3]); } } else *************** *** 7789,7795 **** char_u *str; char_u buf[NUMBUFLEN]; ! str = get_tv_string_buf(&argvars[0], buf); do_luaeval(str, argvars + 1, rettv); } #endif --- 7789,7795 ---- char_u *str; char_u buf[NUMBUFLEN]; ! str = tv_get_string_buf(&argvars[0], buf); do_luaeval(str, argvars + 1, rettv); } #endif *************** *** 7890,7900 **** } else { ! expr = str = get_tv_string(&argvars[0]); len = (long)STRLEN(str); } ! pat = get_tv_string_buf_chk(&argvars[1], patbuf); if (pat == NULL) goto theend; --- 7890,7900 ---- } else { ! expr = str = tv_get_string(&argvars[0]); len = (long)STRLEN(str); } ! pat = tv_get_string_buf_chk(&argvars[1], patbuf); if (pat == NULL) goto theend; *************** *** 7902,7908 **** { int error = FALSE; ! start = (long)get_tv_number_chk(&argvars[2], &error); if (error) goto theend; if (l != NULL) --- 7902,7908 ---- { int error = FALSE; ! start = (long)tv_get_number_chk(&argvars[2], &error); if (error) goto theend; if (l != NULL) *************** *** 7931,7937 **** } if (argvars[3].v_type != VAR_UNKNOWN) ! nth = (long)get_tv_number_chk(&argvars[3], &error); if (error) goto theend; } --- 7931,7937 ---- } if (argvars[3].v_type != VAR_UNKNOWN) ! nth = (long)tv_get_number_chk(&argvars[3], &error); if (error) goto theend; } *************** *** 8106,8113 **** { #ifdef FEAT_SEARCH_EXTRA char_u buf[NUMBUFLEN]; ! char_u *grp = get_tv_string_buf_chk(&argvars[0], buf); /* group */ ! char_u *pat = get_tv_string_buf_chk(&argvars[1], buf); /* pattern */ int prio = 10; /* default priority */ int id = -1; int error = FALSE; --- 8106,8113 ---- { #ifdef FEAT_SEARCH_EXTRA char_u buf[NUMBUFLEN]; ! char_u *grp = tv_get_string_buf_chk(&argvars[0], buf); /* group */ ! char_u *pat = tv_get_string_buf_chk(&argvars[1], buf); /* pattern */ int prio = 10; /* default priority */ int id = -1; int error = FALSE; *************** *** 8120,8129 **** return; if (argvars[2].v_type != VAR_UNKNOWN) { ! prio = (int)get_tv_number_chk(&argvars[2], &error); if (argvars[3].v_type != VAR_UNKNOWN) { ! id = (int)get_tv_number_chk(&argvars[3], &error); if (argvars[4].v_type != VAR_UNKNOWN && matchadd_dict_arg(&argvars[4], &conceal_char, &win) == FAIL) return; --- 8120,8129 ---- return; if (argvars[2].v_type != VAR_UNKNOWN) { ! prio = (int)tv_get_number_chk(&argvars[2], &error); if (argvars[3].v_type != VAR_UNKNOWN) { ! id = (int)tv_get_number_chk(&argvars[3], &error); if (argvars[4].v_type != VAR_UNKNOWN && matchadd_dict_arg(&argvars[4], &conceal_char, &win) == FAIL) return; *************** *** 8160,8166 **** rettv->vval.v_number = -1; ! group = get_tv_string_buf_chk(&argvars[0], buf); if (group == NULL) return; --- 8160,8166 ---- rettv->vval.v_number = -1; ! group = tv_get_string_buf_chk(&argvars[0], buf); if (group == NULL) return; *************** *** 8175,8184 **** if (argvars[2].v_type != VAR_UNKNOWN) { ! prio = (int)get_tv_number_chk(&argvars[2], &error); if (argvars[3].v_type != VAR_UNKNOWN) { ! id = (int)get_tv_number_chk(&argvars[3], &error); if (argvars[4].v_type != VAR_UNKNOWN && matchadd_dict_arg(&argvars[4], &conceal_char, &win) == FAIL) --- 8175,8184 ---- if (argvars[2].v_type != VAR_UNKNOWN) { ! prio = (int)tv_get_number_chk(&argvars[2], &error); if (argvars[3].v_type != VAR_UNKNOWN) { ! id = (int)tv_get_number_chk(&argvars[3], &error); if (argvars[4].v_type != VAR_UNKNOWN && matchadd_dict_arg(&argvars[4], &conceal_char, &win) == FAIL) *************** *** 8209,8215 **** if (rettv_list_alloc(rettv) == OK) { #ifdef FEAT_SEARCH_EXTRA ! int id = (int)get_tv_number(&argvars[0]); matchitem_T *m; if (id >= 1 && id <= 3) --- 8209,8215 ---- if (rettv_list_alloc(rettv) == OK) { #ifdef FEAT_SEARCH_EXTRA ! int id = (int)tv_get_number(&argvars[0]); matchitem_T *m; if (id >= 1 && id <= 3) *************** *** 8238,8244 **** { #ifdef FEAT_SEARCH_EXTRA rettv->vval.v_number = match_delete(curwin, ! (int)get_tv_number(&argvars[0]), TRUE); #endif } --- 8238,8244 ---- { #ifdef FEAT_SEARCH_EXTRA rettv->vval.v_number = match_delete(curwin, ! (int)tv_get_number(&argvars[0]), TRUE); #endif } *************** *** 8296,8308 **** li = l->lv_first; if (li != NULL) { ! n = get_tv_number_chk(&li->li_tv, &error); for (;;) { li = li->li_next; if (li == NULL) break; ! i = get_tv_number_chk(&li->li_tv, &error); if (domax ? i > n : i < n) n = i; } --- 8296,8308 ---- li = l->lv_first; if (li != NULL) { ! n = tv_get_number_chk(&li->li_tv, &error); for (;;) { li = li->li_next; if (li == NULL) break; ! i = tv_get_number_chk(&li->li_tv, &error); if (domax ? i > n : i < n) n = i; } *************** *** 8325,8331 **** if (!HASHITEM_EMPTY(hi)) { --todo; ! i = get_tv_number_chk(&HI2DI(hi)->di_tv, &error); if (first) { n = i; --- 8325,8331 ---- if (!HASHITEM_EMPTY(hi)) { --todo; ! i = tv_get_number_chk(&HI2DI(hi)->di_tv, &error); if (first) { n = i; *************** *** 8405,8411 **** if (check_restricted() || check_secure()) return; ! dir = get_tv_string_buf(&argvars[0], buf); if (*dir == NUL) return; --- 8405,8411 ---- if (check_restricted() || check_secure()) return; ! dir = tv_get_string_buf(&argvars[0], buf); if (*dir == NUL) return; *************** *** 8417,8427 **** { if (argvars[2].v_type != VAR_UNKNOWN) { ! prot = (int)get_tv_number_chk(&argvars[2], NULL); if (prot == -1) return; } ! if (STRCMP(get_tv_string(&argvars[1]), "p") == 0) { if (mch_isdir(dir)) { --- 8417,8427 ---- { if (argvars[2].v_type != VAR_UNKNOWN) { ! prot = (int)tv_get_number_chk(&argvars[2], NULL); if (prot == -1) return; } ! if (STRCMP(tv_get_string(&argvars[1]), "p") == 0) { if (mch_isdir(dir)) { *************** *** 8535,8541 **** char_u *str; char_u buf[NUMBUFLEN]; ! str = get_tv_string_buf(&argvars[0], buf); do_mzeval(str, rettv); } --- 8535,8541 ---- char_u *str; char_u buf[NUMBUFLEN]; ! str = tv_get_string_buf(&argvars[0], buf); do_mzeval(str, rettv); } *************** *** 8561,8567 **** { linenr_T lnum; ! for (lnum = get_tv_lnum(argvars); ; ++lnum) { if (lnum < 0 || lnum > curbuf->b_ml.ml_line_count) { --- 8561,8567 ---- { linenr_T lnum; ! for (lnum = tv_get_lnum(argvars); ; ++lnum) { if (lnum < 0 || lnum > curbuf->b_ml.ml_line_count) { *************** *** 8588,8603 **** int utf8 = 0; if (argvars[1].v_type != VAR_UNKNOWN) ! utf8 = (int)get_tv_number_chk(&argvars[1], NULL); if (utf8) ! buf[(*utf_char2bytes)((int)get_tv_number(&argvars[0]), buf)] = NUL; else ! buf[(*mb_char2bytes)((int)get_tv_number(&argvars[0]), buf)] = NUL; } else #endif { ! buf[0] = (char_u)get_tv_number(&argvars[0]); buf[1] = NUL; } rettv->v_type = VAR_STRING; --- 8588,8603 ---- int utf8 = 0; if (argvars[1].v_type != VAR_UNKNOWN) ! utf8 = (int)tv_get_number_chk(&argvars[1], NULL); if (utf8) ! buf[(*utf_char2bytes)((int)tv_get_number(&argvars[0]), buf)] = NUL; else ! buf[(*mb_char2bytes)((int)tv_get_number(&argvars[0]), buf)] = NUL; } else #endif { ! buf[0] = (char_u)tv_get_number(&argvars[0]); buf[1] = NUL; } rettv->v_type = VAR_STRING; *************** *** 8610,8617 **** static void f_or(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL) ! | get_tv_number_chk(&argvars[1], NULL); } /* --- 8610,8617 ---- static void f_or(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = tv_get_number_chk(&argvars[0], NULL) ! | tv_get_number_chk(&argvars[1], NULL); } /* *************** *** 8623,8629 **** char_u *p; rettv->v_type = VAR_STRING; ! p = get_tv_string_chk(&argvars[0]); if (p == NULL) rettv->vval.v_string = NULL; else --- 8623,8629 ---- char_u *p; rettv->v_type = VAR_STRING; ! p = tv_get_string_chk(&argvars[0]); if (p == NULL) rettv->vval.v_string = NULL; else *************** *** 8645,8651 **** char_u *str; char_u buf[NUMBUFLEN]; ! str = get_tv_string_buf(&argvars[0], buf); do_perleval(str, rettv); } #endif --- 8645,8651 ---- char_u *str; char_u buf[NUMBUFLEN]; ! str = tv_get_string_buf(&argvars[0], buf); do_perleval(str, rettv); } #endif *************** *** 8676,8682 **** { linenr_T lnum; ! lnum = get_tv_lnum(argvars); if (lnum < 1 || lnum > curbuf->b_ml.ml_line_count) lnum = 0; else --- 8676,8682 ---- { linenr_T lnum; ! lnum = tv_get_lnum(argvars); if (lnum < 1 || lnum > curbuf->b_ml.ml_line_count) lnum = 0; else *************** *** 8708,8714 **** /* Get the required length, allocate the buffer and do it for real. */ did_emsg = FALSE; ! fmt = (char *)get_tv_string_buf(&argvars[0], buf); len = vim_vsnprintf_typval(NULL, 0, fmt, ap, argvars + 1); if (!did_emsg) { --- 8708,8714 ---- /* Get the required length, allocate the buffer and do it for real. */ did_emsg = FALSE; ! fmt = (char *)tv_get_string_buf(&argvars[0], buf); len = vim_vsnprintf_typval(NULL, 0, fmt, ap, argvars + 1); if (!did_emsg) { *************** *** 8797,8803 **** if (buf == NULL) return; ! text = get_tv_string(&argvars[1]); vim_free(buf->b_prompt_text); buf->b_prompt_text = vim_strsave(text); } --- 8797,8803 ---- if (buf == NULL) return; ! text = tv_get_string(&argvars[1]); vim_free(buf->b_prompt_text); buf->b_prompt_text = vim_strsave(text); } *************** *** 8828,8834 **** if (p_pyx == 0) p_pyx = 3; ! str = get_tv_string_buf(&argvars[0], buf); do_py3eval(str, rettv); } #endif --- 8828,8834 ---- if (p_pyx == 0) p_pyx = 3; ! str = tv_get_string_buf(&argvars[0], buf); do_py3eval(str, rettv); } #endif *************** *** 8846,8852 **** if (p_pyx == 0) p_pyx = 2; ! str = get_tv_string_buf(&argvars[0], buf); do_pyeval(str, rettv); } #endif --- 8846,8852 ---- if (p_pyx == 0) p_pyx = 2; ! str = tv_get_string_buf(&argvars[0], buf); do_pyeval(str, rettv); } #endif *************** *** 8884,8890 **** varnumber_T i; int error = FALSE; ! start = get_tv_number_chk(&argvars[0], &error); if (argvars[1].v_type == VAR_UNKNOWN) { end = start - 1; --- 8884,8890 ---- varnumber_T i; int error = FALSE; ! start = tv_get_number_chk(&argvars[0], &error); if (argvars[1].v_type == VAR_UNKNOWN) { end = start - 1; *************** *** 8892,8900 **** } else { ! end = get_tv_number_chk(&argvars[1], &error); if (argvars[2].v_type != VAR_UNKNOWN) ! stride = get_tv_number_chk(&argvars[2], &error); } if (error) --- 8892,8900 ---- } else { ! end = tv_get_number_chk(&argvars[1], &error); if (argvars[2].v_type != VAR_UNKNOWN) ! stride = tv_get_number_chk(&argvars[2], &error); } if (error) *************** *** 8936,8945 **** if (argvars[1].v_type != VAR_UNKNOWN) { ! if (STRCMP(get_tv_string(&argvars[1]), "b") == 0) binary = TRUE; if (argvars[2].v_type != VAR_UNKNOWN) ! maxline = (long)get_tv_number(&argvars[2]); } if (rettv_list_alloc(rettv) == FAIL) --- 8936,8945 ---- if (argvars[1].v_type != VAR_UNKNOWN) { ! if (STRCMP(tv_get_string(&argvars[1]), "b") == 0) binary = TRUE; if (argvars[2].v_type != VAR_UNKNOWN) ! maxline = (long)tv_get_number(&argvars[2]); } if (rettv_list_alloc(rettv) == FAIL) *************** *** 8947,8953 **** /* Always open the file in binary mode, library functions have a mind of * their own about CR-LF conversion. */ ! fname = get_tv_string(&argvars[0]); if (*fname == NUL || (fd = mch_fopen((char *)fname, READBIN)) == NULL) { EMSG2(_(e_notopen), *fname == NUL ? (char_u *)_("") : fname); --- 8947,8953 ---- /* Always open the file in binary mode, library functions have a mind of * their own about CR-LF conversion. */ ! fname = tv_get_string(&argvars[0]); if (*fname == NUL || (fd = mch_fopen((char *)fname, READBIN)) == NULL) { EMSG2(_(e_notopen), *fname == NUL ? (char_u *)_("") : fname); *************** *** 9318,9329 **** # endif if (argvars[2].v_type != VAR_UNKNOWN && argvars[3].v_type != VAR_UNKNOWN) ! timeout = get_tv_number(&argvars[3]); ! server_name = get_tv_string_chk(&argvars[0]); if (server_name == NULL) return; /* type error; errmsg already given */ ! keys = get_tv_string_buf(&argvars[1], buf); # ifdef WIN32 if (serverSendToVim(server_name, keys, &r, &w, expr, timeout, TRUE) < 0) # else --- 9318,9329 ---- # endif if (argvars[2].v_type != VAR_UNKNOWN && argvars[3].v_type != VAR_UNKNOWN) ! timeout = tv_get_number(&argvars[3]); ! server_name = tv_get_string_chk(&argvars[0]); if (server_name == NULL) return; /* type error; errmsg already given */ ! keys = tv_get_string_buf(&argvars[1], buf); # ifdef WIN32 if (serverSendToVim(server_name, keys, &r, &w, expr, timeout, TRUE) < 0) # else *************** *** 9349,9355 **** char_u str[30]; char_u *idvar; ! idvar = get_tv_string_chk(&argvars[2]); if (idvar != NULL && *idvar != NUL) { sprintf((char *)str, PRINTF_HEX_LONG_U, (long_u)w); --- 9349,9355 ---- char_u str[30]; char_u *idvar; ! idvar = tv_get_string_chk(&argvars[2]); if (idvar != NULL && *idvar != NUL) { sprintf((char *)str, PRINTF_HEX_LONG_U, (long_u)w); *************** *** 9385,9391 **** # ifdef WIN32 /* On Win32 it's done in this application. */ { ! char_u *server_name = get_tv_string_chk(&argvars[0]); if (server_name != NULL) serverForeground(server_name); --- 9385,9391 ---- # ifdef WIN32 /* On Win32 it's done in this application. */ { ! char_u *server_name = tv_get_string_chk(&argvars[0]); if (server_name != NULL) serverForeground(server_name); *************** *** 9419,9425 **** rettv->vval.v_number = -1; return; } ! serverid = get_tv_string_chk(&argvars[0]); if (serverid == NULL) { rettv->vval.v_number = -1; --- 9419,9425 ---- rettv->vval.v_number = -1; return; } ! serverid = tv_get_string_chk(&argvars[0]); if (serverid == NULL) { rettv->vval.v_number = -1; *************** *** 9448,9454 **** v.di_tv.v_type = VAR_STRING; v.di_tv.vval.v_string = vim_strsave(s); ! retvar = get_tv_string_chk(&argvars[1]); if (retvar != NULL) set_var(retvar, &v.di_tv, FALSE); vim_free(v.di_tv.vval.v_string); --- 9448,9454 ---- v.di_tv.v_type = VAR_STRING; v.di_tv.vval.v_string = vim_strsave(s); ! retvar = tv_get_string_chk(&argvars[1]); if (retvar != NULL) set_var(retvar, &v.di_tv, FALSE); vim_free(v.di_tv.vval.v_string); *************** *** 9464,9470 **** char_u *r = NULL; #ifdef FEAT_CLIENTSERVER ! char_u *serverid = get_tv_string_chk(&argvars[0]); if (serverid != NULL && !check_restricted() && !check_secure()) { --- 9464,9470 ---- char_u *r = NULL; #ifdef FEAT_CLIENTSERVER ! char_u *serverid = tv_get_string_chk(&argvars[0]); if (serverid != NULL && !check_restricted() && !check_secure()) { *************** *** 9475,9481 **** # endif if (argvars[1].v_type != VAR_UNKNOWN) ! timeout = get_tv_number(&argvars[1]); # ifdef WIN32 sscanf((char *)serverid, SCANF_HEX_LONG_U, &n); --- 9475,9481 ---- # endif if (argvars[1].v_type != VAR_UNKNOWN) ! timeout = tv_get_number(&argvars[1]); # ifdef WIN32 sscanf((char *)serverid, SCANF_HEX_LONG_U, &n); *************** *** 9514,9520 **** f_remote_startserver(typval_T *argvars UNUSED, typval_T *rettv UNUSED) { #ifdef FEAT_CLIENTSERVER ! char_u *server = get_tv_string_chk(&argvars[0]); if (server == NULL) return; /* type error; errmsg already given */ --- 9514,9520 ---- f_remote_startserver(typval_T *argvars UNUSED, typval_T *rettv UNUSED) { #ifdef FEAT_CLIENTSERVER ! char_u *server = tv_get_string_chk(&argvars[0]); if (server == NULL) return; /* type error; errmsg already given */ *************** *** 9557,9563 **** else if ((d = argvars[0].vval.v_dict) != NULL && !tv_check_lock(d->dv_lock, arg_errmsg, TRUE)) { ! key = get_tv_string_chk(&argvars[1]); if (key != NULL) { di = dict_find(d, key, -1); --- 9557,9563 ---- else if ((d = argvars[0].vval.v_dict) != NULL && !tv_check_lock(d->dv_lock, arg_errmsg, TRUE)) { ! key = tv_get_string_chk(&argvars[1]); if (key != NULL) { di = dict_find(d, key, -1); *************** *** 9580,9586 **** { int error = FALSE; ! idx = (long)get_tv_number_chk(&argvars[1], &error); if (error) ; /* type error: do nothing, errmsg already given */ else if ((item = list_find(l, idx)) == NULL) --- 9580,9586 ---- { int error = FALSE; ! idx = (long)tv_get_number_chk(&argvars[1], &error); if (error) ; /* type error: do nothing, errmsg already given */ else if ((item = list_find(l, idx)) == NULL) *************** *** 9597,9603 **** else { /* Remove range of items, return list with values. */ ! end = (long)get_tv_number_chk(&argvars[2], &error); if (error) ; /* type error: do nothing */ else if ((item2 = list_find(l, end)) == NULL) --- 9597,9603 ---- else { /* Remove range of items, return list with values. */ ! end = (long)tv_get_number_chk(&argvars[2], &error); if (error) ; /* type error: do nothing */ else if ((item2 = list_find(l, end)) == NULL) *************** *** 9644,9651 **** if (check_restricted() || check_secure()) rettv->vval.v_number = -1; else ! rettv->vval.v_number = vim_rename(get_tv_string(&argvars[0]), ! get_tv_string_buf(&argvars[1], buf)); } /* --- 9644,9651 ---- if (check_restricted() || check_secure()) rettv->vval.v_number = -1; else ! rettv->vval.v_number = vim_rename(tv_get_string(&argvars[0]), ! tv_get_string_buf(&argvars[1], buf)); } /* *************** *** 9661,9667 **** char_u *r; int i; ! n = (int)get_tv_number(&argvars[1]); if (argvars[0].v_type == VAR_LIST) { if (rettv_list_alloc(rettv) == OK && argvars[0].vval.v_list != NULL) --- 9661,9667 ---- char_u *r; int i; ! n = (int)tv_get_number(&argvars[1]); if (argvars[0].v_type == VAR_LIST) { if (rettv_list_alloc(rettv) == OK && argvars[0].vval.v_list != NULL) *************** *** 9672,9678 **** } else { ! p = get_tv_string(&argvars[0]); rettv->v_type = VAR_STRING; rettv->vval.v_string = NULL; --- 9672,9678 ---- } else { ! p = tv_get_string(&argvars[0]); rettv->v_type = VAR_STRING; rettv->vval.v_string = NULL; *************** *** 9704,9710 **** char_u *buf = NULL; #endif ! p = get_tv_string(&argvars[0]); #ifdef FEAT_SHORTCUT { char_u *v = NULL; --- 9704,9710 ---- char_u *buf = NULL; #endif ! p = tv_get_string(&argvars[0]); #ifdef FEAT_SHORTCUT { char_u *v = NULL; *************** *** 9950,9956 **** if (varp->v_type != VAR_UNKNOWN) { ! flags = get_tv_string_buf_chk(varp, nbuf); if (flags == NULL) return 0; /* type error; errmsg already given */ while (*flags != NUL) --- 9950,9956 ---- if (varp->v_type != VAR_UNKNOWN) { ! flags = tv_get_string_buf_chk(varp, nbuf); if (flags == NULL) return 0; /* type error; errmsg already given */ while (*flags != NUL) *************** *** 10010,10016 **** int options = SEARCH_KEEP; int subpatnum; ! pat = get_tv_string(&argvars[0]); dir = get_search_arg(&argvars[1], flagsp); /* may set p_ws */ if (dir == 0) goto theend; --- 10010,10016 ---- int options = SEARCH_KEEP; int subpatnum; ! pat = tv_get_string(&argvars[0]); dir = get_search_arg(&argvars[1], flagsp); /* may set p_ws */ if (dir == 0) goto theend; *************** *** 10025,10037 **** /* Optional arguments: line number to stop searching and timeout. */ if (argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN) { ! lnum_stop = (long)get_tv_number_chk(&argvars[2], NULL); if (lnum_stop < 0) goto theend; #ifdef FEAT_RELTIME if (argvars[3].v_type != VAR_UNKNOWN) { ! time_limit = (long)get_tv_number_chk(&argvars[3], NULL); if (time_limit < 0) goto theend; } --- 10025,10037 ---- /* Optional arguments: line number to stop searching and timeout. */ if (argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN) { ! lnum_stop = (long)tv_get_number_chk(&argvars[2], NULL); if (lnum_stop < 0) goto theend; #ifdef FEAT_RELTIME if (argvars[3].v_type != VAR_UNKNOWN) { ! time_limit = (long)tv_get_number_chk(&argvars[3], NULL); if (time_limit < 0) goto theend; } *************** *** 10052,10058 **** if (((flags & (SP_REPEAT | SP_RETCOUNT)) != 0) || ((flags & SP_NOMOVE) && (flags & SP_SETPCMARK))) { ! EMSG2(_(e_invarg2), get_tv_string(&argvars[1])); goto theend; } --- 10052,10058 ---- if (((flags & (SP_REPEAT | SP_RETCOUNT)) != 0) || ((flags & SP_NOMOVE) && (flags & SP_SETPCMARK))) { ! EMSG2(_(e_invarg2), tv_get_string(&argvars[1])); goto theend; } *************** *** 10127,10134 **** int col; int c; ! row = (int)get_tv_number_chk(&argvars[0], NULL) - 1; ! col = (int)get_tv_number_chk(&argvars[1], NULL) - 1; if (row < 0 || row >= screen_Rows || col < 0 || col >= screen_Columns) c = -1; --- 10127,10134 ---- int col; int c; ! row = (int)tv_get_number_chk(&argvars[0], NULL) - 1; ! col = (int)tv_get_number_chk(&argvars[1], NULL) - 1; if (row < 0 || row >= screen_Rows || col < 0 || col >= screen_Columns) c = -1; *************** *** 10148,10155 **** int off; int c; ! row = (int)get_tv_number_chk(&argvars[0], NULL) - 1; ! col = (int)get_tv_number_chk(&argvars[1], NULL) - 1; if (row < 0 || row >= screen_Rows || col < 0 || col >= screen_Columns) c = -1; --- 10148,10155 ---- int off; int c; ! row = (int)tv_get_number_chk(&argvars[0], NULL) - 1; ! col = (int)tv_get_number_chk(&argvars[1], NULL) - 1; if (row < 0 || row >= screen_Rows || col < 0 || col >= screen_Columns) c = -1; *************** *** 10210,10221 **** rettv->vval.v_number = 1; /* default: FAIL */ ! name = get_tv_string_chk(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN) { ! locally = (int)get_tv_number_chk(&argvars[1], &error) == 0; if (!error && argvars[2].v_type != VAR_UNKNOWN) ! thisblock = (int)get_tv_number_chk(&argvars[2], &error) != 0; } if (!error && name != NULL) rettv->vval.v_number = find_decl(name, (int)STRLEN(name), --- 10210,10221 ---- rettv->vval.v_number = 1; /* default: FAIL */ ! name = tv_get_string_chk(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN) { ! locally = (int)tv_get_number_chk(&argvars[1], &error) == 0; if (!error && argvars[2].v_type != VAR_UNKNOWN) ! thisblock = (int)tv_get_number_chk(&argvars[2], &error) != 0; } if (!error && name != NULL) rettv->vval.v_number = find_decl(name, (int)STRLEN(name), *************** *** 10241,10249 **** /* Get the three pattern arguments: start, middle, end. Will result in an * error if not a valid argument. */ ! spat = get_tv_string_chk(&argvars[0]); ! mpat = get_tv_string_buf_chk(&argvars[1], nbuf1); ! epat = get_tv_string_buf_chk(&argvars[2], nbuf2); if (spat == NULL || mpat == NULL || epat == NULL) goto theend; /* type error */ --- 10241,10249 ---- /* Get the three pattern arguments: start, middle, end. Will result in an * error if not a valid argument. */ ! spat = tv_get_string_chk(&argvars[0]); ! mpat = tv_get_string_buf_chk(&argvars[1], nbuf1); ! epat = tv_get_string_buf_chk(&argvars[2], nbuf2); if (spat == NULL || mpat == NULL || epat == NULL) goto theend; /* type error */ *************** *** 10258,10264 **** if ((flags & (SP_END | SP_SUBPAT)) != 0 || ((flags & SP_NOMOVE) && (flags & SP_SETPCMARK))) { ! EMSG2(_(e_invarg2), get_tv_string(&argvars[3])); goto theend; } --- 10258,10264 ---- if ((flags & (SP_END | SP_SUBPAT)) != 0 || ((flags & SP_NOMOVE) && (flags & SP_SETPCMARK))) { ! EMSG2(_(e_invarg2), tv_get_string(&argvars[3])); goto theend; } *************** *** 10277,10300 **** && skip->v_type != VAR_STRING) { /* Type error */ ! EMSG2(_(e_invarg2), get_tv_string(&argvars[4])); goto theend; } if (argvars[5].v_type != VAR_UNKNOWN) { ! lnum_stop = (long)get_tv_number_chk(&argvars[5], NULL); if (lnum_stop < 0) { ! EMSG2(_(e_invarg2), get_tv_string(&argvars[5])); goto theend; } #ifdef FEAT_RELTIME if (argvars[6].v_type != VAR_UNKNOWN) { ! time_limit = (long)get_tv_number_chk(&argvars[6], NULL); if (time_limit < 0) { ! EMSG2(_(e_invarg2), get_tv_string(&argvars[6])); goto theend; } } --- 10277,10300 ---- && skip->v_type != VAR_STRING) { /* Type error */ ! EMSG2(_(e_invarg2), tv_get_string(&argvars[4])); goto theend; } if (argvars[5].v_type != VAR_UNKNOWN) { ! lnum_stop = (long)tv_get_number_chk(&argvars[5], NULL); if (lnum_stop < 0) { ! EMSG2(_(e_invarg2), tv_get_string(&argvars[5])); goto theend; } #ifdef FEAT_RELTIME if (argvars[6].v_type != VAR_UNKNOWN) { ! time_limit = (long)tv_get_number_chk(&argvars[6], NULL); if (time_limit < 0) { ! EMSG2(_(e_invarg2), tv_get_string(&argvars[6])); goto theend; } } *************** *** 10544,10551 **** { #ifdef FEAT_CLIENTSERVER char_u buf[NUMBUFLEN]; ! char_u *server = get_tv_string_chk(&argvars[0]); ! char_u *reply = get_tv_string_buf_chk(&argvars[1], buf); rettv->vval.v_number = -1; if (server == NULL || reply == NULL) --- 10544,10551 ---- { #ifdef FEAT_CLIENTSERVER char_u buf[NUMBUFLEN]; ! char_u *server = tv_get_string_chk(&argvars[0]); ! char_u *reply = tv_get_string_buf_chk(&argvars[1], buf); rettv->vval.v_number = -1; if (server == NULL || reply == NULL) *************** *** 10600,10606 **** rettv->vval.v_number = 1; /* FAIL */ else { ! lnum = get_tv_lnum_buf(&argvars[1], buf); set_buffer_lines(buf, lnum, FALSE, &argvars[2], rettv); } } --- 10600,10606 ---- rettv->vval.v_number = 1; /* FAIL */ else { ! lnum = tv_get_lnum_buf(&argvars[1], buf); set_buffer_lines(buf, lnum, FALSE, &argvars[2], rettv); } } *************** *** 10618,10625 **** if (check_restricted() || check_secure()) return; ! (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ ! varname = get_tv_string_chk(&argvars[1]); buf = get_buf_tv(&argvars[0], FALSE); varp = &argvars[2]; --- 10618,10625 ---- if (check_restricted() || check_secure()) return; ! (void)tv_get_number(&argvars[0]); /* issue errmsg if type error */ ! varname = tv_get_string_chk(&argvars[1]); buf = get_buf_tv(&argvars[0], FALSE); varp = &argvars[2]; *************** *** 10636,10643 **** aucmd_prepbuf(&aco, buf); ++varname; ! numval = (long)get_tv_number_chk(varp, &error); ! strval = get_tv_string_buf_chk(varp, nbuf); if (!error && strval != NULL) set_option_value(varname, numval, strval, OPT_LOCAL); --- 10636,10643 ---- aucmd_prepbuf(&aco, buf); ++varname; ! numval = (long)tv_get_number_chk(varp, &error); ! strval = tv_get_string_buf_chk(varp, nbuf); if (!error && strval != NULL) set_option_value(varname, numval, strval, OPT_LOCAL); *************** *** 10696,10707 **** di = dict_find(d, (char_u *)"forward", -1); if (di != NULL) ! set_csearch_direction((int)get_tv_number(&di->di_tv) ? FORWARD : BACKWARD); di = dict_find(d, (char_u *)"until", -1); if (di != NULL) ! set_csearch_until(!!get_tv_number(&di->di_tv)); } } --- 10696,10707 ---- di = dict_find(d, (char_u *)"forward", -1); if (di != NULL) ! set_csearch_direction((int)tv_get_number(&di->di_tv) ? FORWARD : BACKWARD); di = dict_find(d, (char_u *)"until", -1); if (di != NULL) ! set_csearch_until(!!tv_get_number(&di->di_tv)); } } *************** *** 10711,10717 **** static void f_setcmdpos(typval_T *argvars, typval_T *rettv) { ! int pos = (int)get_tv_number(&argvars[0]) - 1; if (pos >= 0) rettv->vval.v_number = set_cmdline_pos(pos); --- 10711,10717 ---- static void f_setcmdpos(typval_T *argvars, typval_T *rettv) { ! int pos = (int)tv_get_number(&argvars[0]) - 1; if (pos >= 0) rettv->vval.v_number = set_cmdline_pos(pos); *************** *** 10731,10740 **** int mode = 0; rettv->vval.v_number = 0; ! fname = get_tv_string_chk(&argvars[0]); if (fname == NULL) return; ! mode_str = get_tv_string_buf_chk(&argvars[1], modebuf); if (mode_str == NULL) return; if (STRLEN(mode_str) != 9) --- 10731,10740 ---- int mode = 0; rettv->vval.v_number = 0; ! fname = tv_get_string_chk(&argvars[0]); if (fname == NULL) return; ! mode_str = tv_get_string_buf_chk(&argvars[1], modebuf); if (mode_str == NULL) return; if (STRLEN(mode_str) != 9) *************** *** 10759,10765 **** static void f_setline(typval_T *argvars, typval_T *rettv) { ! linenr_T lnum = get_tv_lnum(&argvars[0]); set_buffer_lines(curbuf, lnum, FALSE, &argvars[1], rettv); } --- 10759,10765 ---- static void f_setline(typval_T *argvars, typval_T *rettv) { ! linenr_T lnum = tv_get_lnum(&argvars[0]); set_buffer_lines(curbuf, lnum, FALSE, &argvars[1], rettv); } *************** *** 10797,10803 **** if (action_arg->v_type == VAR_STRING) { ! act = get_tv_string_chk(action_arg); if (act == NULL) return; /* type error; errmsg already given */ if ((*act == 'a' || *act == 'r' || *act == ' ' || *act == 'f') && --- 10797,10803 ---- if (action_arg->v_type == VAR_STRING) { ! act = tv_get_string_chk(action_arg); if (act == NULL) return; /* type error; errmsg already given */ if ((*act == 'a' || *act == 'r' || *act == ' ' || *act == 'f') && *************** *** 10971,10977 **** colnr_T curswant = -1; rettv->vval.v_number = -1; ! name = get_tv_string_chk(argvars); if (name != NULL) { if (list2fpos(&argvars[1], &pos, &fnum, &curswant) == OK) --- 10971,10977 ---- colnr_T curswant = -1; rettv->vval.v_number = -1; ! name = tv_get_string_chk(argvars); if (name != NULL) { if (list2fpos(&argvars[1], &pos, &fnum, &curswant) == OK) *************** *** 11029,11035 **** yank_type = MAUTO; append = FALSE; ! strregname = get_tv_string_chk(argvars); rettv->vval.v_number = 1; /* FAIL is default */ if (strregname == NULL) --- 11029,11035 ---- yank_type = MAUTO; append = FALSE; ! strregname = tv_get_string_chk(argvars); rettv->vval.v_number = 1; /* FAIL is default */ if (strregname == NULL) *************** *** 11040,11046 **** if (argvars[2].v_type != VAR_UNKNOWN) { ! stropt = get_tv_string_chk(&argvars[2]); if (stropt == NULL) return; /* type error */ for (; *stropt != NUL; ++stropt) --- 11040,11046 ---- if (argvars[2].v_type != VAR_UNKNOWN) { ! stropt = tv_get_string_chk(&argvars[2]); if (stropt == NULL) return; /* type error */ for (; *stropt != NUL; ++stropt) *************** *** 11093,11104 **** for (li = ll == NULL ? NULL : ll->lv_first; li != NULL; li = li->li_next) { ! strval = get_tv_string_buf_chk(&li->li_tv, buf); if (strval == NULL) goto free_lstval; if (strval == buf) { ! /* Need to make a copy, next get_tv_string_buf_chk() will * overwrite the string. */ strval = vim_strsave(buf); if (strval == NULL) --- 11093,11104 ---- for (li = ll == NULL ? NULL : ll->lv_first; li != NULL; li = li->li_next) { ! strval = tv_get_string_buf_chk(&li->li_tv, buf); if (strval == NULL) goto free_lstval; if (strval == buf) { ! /* Need to make a copy, next tv_get_string_buf_chk() will * overwrite the string. */ strval = vim_strsave(buf); if (strval == NULL) *************** *** 11118,11124 **** } else { ! strval = get_tv_string_chk(&argvars[1]); if (strval == NULL) return; write_reg_contents_ex(regname, strval, -1, --- 11118,11124 ---- } else { ! strval = tv_get_string_chk(&argvars[1]); if (strval == NULL) return; write_reg_contents_ex(regname, strval, -1, *************** *** 11143,11150 **** if (check_restricted() || check_secure()) return; ! tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL)); ! varname = get_tv_string_chk(&argvars[1]); varp = &argvars[2]; if (varname != NULL && varp != NULL && tp != NULL) --- 11143,11150 ---- if (check_restricted() || check_secure()) return; ! tp = find_tabpage((int)tv_get_number_chk(&argvars[0], NULL)); ! varname = tv_get_string_chk(&argvars[1]); varp = &argvars[2]; if (varname != NULL && varp != NULL && tp != NULL) *************** *** 11211,11217 **** else if (argvars[2].v_type == VAR_STRING) { char_u *actstr; ! actstr = get_tv_string_chk(&argvars[2]); if (actstr == NULL) return; if ((*actstr == 'r' || *actstr == 'a') && actstr[1] == NUL) --- 11211,11217 ---- else if (argvars[2].v_type == VAR_STRING) { char_u *actstr; ! actstr = tv_get_string_chk(&argvars[2]); if (actstr == NULL) return; if ((*actstr == 'r' || *actstr == 'a') && actstr[1] == NUL) *************** *** 11250,11256 **** { char_u *p; ! p = get_tv_string(&argvars[0]); rettv->vval.v_string = vim_strsave( sha256_bytes(p, (int)STRLEN(p), NULL, 0)); rettv->v_type = VAR_STRING; --- 11250,11256 ---- { char_u *p; ! p = tv_get_string(&argvars[0]); rettv->vval.v_string = vim_strsave( sha256_bytes(p, (int)STRLEN(p), NULL, 0)); rettv->v_type = VAR_STRING; *************** *** 11266,11272 **** int do_special = non_zero_arg(&argvars[1]); rettv->vval.v_string = vim_strsave_shellescape( ! get_tv_string(&argvars[0]), do_special, do_special); rettv->v_type = VAR_STRING; } --- 11266,11272 ---- int do_special = non_zero_arg(&argvars[1]); rettv->vval.v_string = vim_strsave_shellescape( ! tv_get_string(&argvars[0]), do_special, do_special); rettv->v_type = VAR_STRING; } *************** *** 11282,11288 **** { long col; ! col = (long)get_tv_number_chk(argvars, NULL); if (col < 0) return; // type error; errmsg already given #ifdef FEAT_VARTABS --- 11282,11288 ---- { long col; ! col = (long)tv_get_number_chk(argvars, NULL); if (col < 0) return; // type error; errmsg already given #ifdef FEAT_VARTABS *************** *** 11310,11316 **** rettv->vval.v_number = -1; ! name = get_tv_string_chk(&argvars[0]); if (name == NULL) return; --- 11310,11316 ---- rettv->vval.v_number = -1; ! name = tv_get_string_chk(&argvars[0]); if (name == NULL) return; *************** *** 11355,11361 **** return; if (argvars[0].v_type != VAR_UNKNOWN) ! name = get_tv_string(&argvars[0]); sign_getlist(name, rettv->vval.v_list); } --- 11355,11361 ---- return; if (argvars[0].v_type != VAR_UNKNOWN) ! name = tv_get_string(&argvars[0]); sign_getlist(name, rettv->vval.v_list); } *************** *** 11384,11390 **** if (buf == NULL) { EMSG2(_("E158: Invalid buffer name: %s"), ! get_tv_string(&argvars[0])); return; } --- 11384,11390 ---- if (buf == NULL) { EMSG2(_("E158: Invalid buffer name: %s"), ! tv_get_string(&argvars[0])); return; } *************** *** 11399,11419 **** if ((di = dict_find(dict, (char_u *)"lnum", -1)) != NULL) { // get signs placed at this line ! (void)get_tv_number_chk(&di->di_tv, ¬anum); if (notanum) return; ! lnum = get_tv_lnum(&di->di_tv); } if ((di = dict_find(dict, (char_u *)"id", -1)) != NULL) { // get sign placed with this identifier ! sign_id = (int)get_tv_number_chk(&di->di_tv, ¬anum); if (notanum) return; } if ((di = dict_find(dict, (char_u *)"group", -1)) != NULL) { ! group = get_tv_string_chk(&di->di_tv); if (group == NULL) return; } --- 11399,11419 ---- if ((di = dict_find(dict, (char_u *)"lnum", -1)) != NULL) { // get signs placed at this line ! (void)tv_get_number_chk(&di->di_tv, ¬anum); if (notanum) return; ! lnum = tv_get_lnum(&di->di_tv); } if ((di = dict_find(dict, (char_u *)"id", -1)) != NULL) { // get sign placed with this identifier ! sign_id = (int)tv_get_number_chk(&di->di_tv, ¬anum); if (notanum) return; } if ((di = dict_find(dict, (char_u *)"group", -1)) != NULL) { ! group = tv_get_string_chk(&di->di_tv); if (group == NULL) return; } *************** *** 11442,11448 **** rettv->vval.v_number = -1; // Sign identifer ! sign_id = (int)get_tv_number_chk(&argvars[0], ¬anum); if (notanum) return; if (sign_id < 0) --- 11442,11448 ---- rettv->vval.v_number = -1; // Sign identifer ! sign_id = (int)tv_get_number_chk(&argvars[0], ¬anum); if (notanum) return; if (sign_id < 0) *************** *** 11452,11458 **** } // Sign group ! group = get_tv_string_chk(&argvars[1]); if (group == NULL) return; if (group[0] == '\0') --- 11452,11458 ---- } // Sign group ! group = tv_get_string_chk(&argvars[1]); if (group == NULL) return; if (group[0] == '\0') *************** *** 11465,11471 **** } // Sign name ! sign_name = get_tv_string_chk(&argvars[2]); if (sign_name == NULL) goto cleanup; --- 11465,11471 ---- } // Sign name ! sign_name = tv_get_string_chk(&argvars[2]); if (sign_name == NULL) goto cleanup; *************** *** 11473,11479 **** buf = find_buffer(&argvars[3]); if (buf == NULL) { ! EMSG2(_("E158: Invalid buffer name: %s"), get_tv_string(&argvars[2])); goto cleanup; } --- 11473,11479 ---- buf = find_buffer(&argvars[3]); if (buf == NULL) { ! EMSG2(_("E158: Invalid buffer name: %s"), tv_get_string(&argvars[2])); goto cleanup; } *************** *** 11489,11503 **** // Line number where the sign is to be placed if ((di = dict_find(dict, (char_u *)"lnum", -1)) != NULL) { ! (void)get_tv_number_chk(&di->di_tv, ¬anum); if (notanum) goto cleanup; ! lnum = get_tv_lnum(&di->di_tv); } if ((di = dict_find(dict, (char_u *)"priority", -1)) != NULL) { // Sign priority ! prio = (int)get_tv_number_chk(&di->di_tv, ¬anum); if (notanum) goto cleanup; } --- 11489,11503 ---- // Line number where the sign is to be placed if ((di = dict_find(dict, (char_u *)"lnum", -1)) != NULL) { ! (void)tv_get_number_chk(&di->di_tv, ¬anum); if (notanum) goto cleanup; ! lnum = tv_get_lnum(&di->di_tv); } if ((di = dict_find(dict, (char_u *)"priority", -1)) != NULL) { // Sign priority ! prio = (int)tv_get_number_chk(&di->di_tv, ¬anum); if (notanum) goto cleanup; } *************** *** 11529,11535 **** else { // Free only the specified sign ! name = get_tv_string_chk(&argvars[0]); if (name == NULL) return; --- 11529,11535 ---- else { // Free only the specified sign ! name = tv_get_string_chk(&argvars[0]); if (name == NULL) return; *************** *** 11558,11564 **** return; } ! group = get_tv_string(&argvars[0]); if (group[0] == '\0') group = NULL; // global sign group else --- 11558,11564 ---- return; } ! group = tv_get_string(&argvars[0]); if (group[0] == '\0') group = NULL; // global sign group else *************** *** 11583,11589 **** if (buf == NULL) { EMSG2(_("E158: Invalid buffer name: %s"), ! get_tv_string(&di->di_tv)); return; } } --- 11583,11589 ---- if (buf == NULL) { EMSG2(_("E158: Invalid buffer name: %s"), ! tv_get_string(&di->di_tv)); return; } } *************** *** 11615,11621 **** { char_u *p; ! p = get_tv_string(&argvars[0]); rettv->vval.v_string = vim_strsave(p); simplify_filename(rettv->vval.v_string); /* simplify in place */ rettv->v_type = VAR_STRING; --- 11615,11621 ---- { char_u *p; ! p = tv_get_string(&argvars[0]); rettv->vval.v_string = vim_strsave(p); simplify_filename(rettv->vval.v_string); /* simplify in place */ rettv->v_type = VAR_STRING; *************** *** 11713,11720 **** if (sortinfo->item_compare_numbers) { ! varnumber_T v1 = get_tv_number(tv1); ! varnumber_T v2 = get_tv_number(tv2); return v1 == v2 ? 0 : v1 > v2 ? 1 : -1; } --- 11713,11720 ---- if (sortinfo->item_compare_numbers) { ! varnumber_T v1 = tv_get_number(tv1); ! varnumber_T v2 = tv_get_number(tv2); return v1 == v2 ? 0 : v1 > v2 ? 1 : -1; } *************** *** 11722,11729 **** #ifdef FEAT_FLOAT if (sortinfo->item_compare_float) { ! float_T v1 = get_tv_float(tv1); ! float_T v2 = get_tv_float(tv2); return v1 == v2 ? 0 : v1 > v2 ? 1 : -1; } --- 11722,11729 ---- #ifdef FEAT_FLOAT if (sortinfo->item_compare_float) { ! float_T v1 = tv_get_float(tv1); ! float_T v2 = tv_get_float(tv2); return v1 == v2 ? 0 : v1 > v2 ? 1 : -1; } *************** *** 11820,11826 **** if (res == FAIL) res = ITEM_COMPARE_FAIL; else ! res = (int)get_tv_number_chk(&rettv, &sortinfo->item_compare_func_err); if (sortinfo->item_compare_func_err) res = ITEM_COMPARE_FAIL; /* return value has wrong type */ clear_tv(&rettv); --- 11820,11826 ---- if (res == FAIL) res = ITEM_COMPARE_FAIL; else ! res = (int)tv_get_number_chk(&rettv, &sortinfo->item_compare_func_err); if (sortinfo->item_compare_func_err) res = ITEM_COMPARE_FAIL; /* return value has wrong type */ clear_tv(&rettv); *************** *** 11887,11899 **** { int error = FALSE; ! i = (long)get_tv_number_chk(&argvars[1], &error); if (error) goto theend; /* type error; errmsg already given */ if (i == 1) info.item_compare_ic = TRUE; else if (argvars[1].v_type != VAR_NUMBER) ! info.item_compare_func = get_tv_string(&argvars[1]); else if (i != 0) { EMSG(_(e_invarg)); --- 11887,11899 ---- { int error = FALSE; ! i = (long)tv_get_number_chk(&argvars[1], &error); if (error) goto theend; /* type error; errmsg already given */ if (i == 1) info.item_compare_ic = TRUE; else if (argvars[1].v_type != VAR_NUMBER) ! info.item_compare_func = tv_get_string(&argvars[1]); else if (i != 0) { EMSG(_(e_invarg)); *************** *** 12059,12065 **** char_u *s; rettv->v_type = VAR_STRING; ! s = get_tv_string(&argvars[0]); #ifdef FEAT_SPELL rettv->vval.v_string = eval_soundfold(s); #else --- 12059,12065 ---- char_u *s; rettv->v_type = VAR_STRING; ! s = tv_get_string(&argvars[0]); #ifdef FEAT_SPELL rettv->vval.v_string = eval_soundfold(s); #else *************** *** 12093,12099 **** } else if (curwin->w_p_spell && *curbuf->b_s.b_p_spl != NUL) { ! char_u *str = get_tv_string_chk(&argvars[0]); int capcol = -1; if (str != NULL) --- 12093,12099 ---- } else if (curwin->w_p_spell && *curbuf->b_s.b_p_spl != NUL) { ! char_u *str = tv_get_string_chk(&argvars[0]); int capcol = -1; if (str != NULL) *************** *** 12145,12159 **** #ifdef FEAT_SPELL if (curwin->w_p_spell && *curwin->w_s->b_p_spl != NUL) { ! str = get_tv_string(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN) { ! maxcount = (int)get_tv_number_chk(&argvars[1], &typeerr); if (maxcount <= 0) return; if (argvars[2].v_type != VAR_UNKNOWN) { ! need_capital = (int)get_tv_number_chk(&argvars[2], &typeerr); if (typeerr) return; } --- 12145,12159 ---- #ifdef FEAT_SPELL if (curwin->w_p_spell && *curwin->w_s->b_p_spl != NUL) { ! str = tv_get_string(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN) { ! maxcount = (int)tv_get_number_chk(&argvars[1], &typeerr); if (maxcount <= 0) return; if (argvars[2].v_type != VAR_UNKNOWN) { ! need_capital = (int)tv_get_number_chk(&argvars[2], &typeerr); if (typeerr) return; } *************** *** 12201,12214 **** save_cpo = p_cpo; p_cpo = (char_u *)""; ! str = get_tv_string(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN) { ! pat = get_tv_string_buf_chk(&argvars[1], patbuf); if (pat == NULL) typeerr = TRUE; if (argvars[2].v_type != VAR_UNKNOWN) ! keepempty = (int)get_tv_number_chk(&argvars[2], &typeerr); } if (pat == NULL || *pat == NUL) pat = (char_u *)"[\\x01- ]\\+"; --- 12201,12214 ---- save_cpo = p_cpo; p_cpo = (char_u *)""; ! str = tv_get_string(&argvars[0]); if (argvars[1].v_type != VAR_UNKNOWN) { ! pat = tv_get_string_buf_chk(&argvars[1], patbuf); if (pat == NULL) typeerr = TRUE; if (argvars[2].v_type != VAR_UNKNOWN) ! keepempty = (int)tv_get_number_chk(&argvars[2], &typeerr); } if (pat == NULL || *pat == NUL) pat = (char_u *)"[\\x01- ]\\+"; *************** *** 12284,12290 **** static void f_str2float(typval_T *argvars, typval_T *rettv) { ! char_u *p = skipwhite(get_tv_string(&argvars[0])); int isneg = (*p == '-'); if (*p == '+' || *p == '-') --- 12284,12290 ---- static void f_str2float(typval_T *argvars, typval_T *rettv) { ! char_u *p = skipwhite(tv_get_string(&argvars[0])); int isneg = (*p == '-'); if (*p == '+' || *p == '-') *************** *** 12310,12316 **** if (argvars[1].v_type != VAR_UNKNOWN) { ! base = (int)get_tv_number(&argvars[1]); if (base != 2 && base != 8 && base != 10 && base != 16) { EMSG(_(e_invarg)); --- 12310,12316 ---- if (argvars[1].v_type != VAR_UNKNOWN) { ! base = (int)tv_get_number(&argvars[1]); if (base != 2 && base != 8 && base != 10 && base != 16) { EMSG(_(e_invarg)); *************** *** 12318,12324 **** } } ! p = skipwhite(get_tv_string(&argvars[0])); isneg = (*p == '-'); if (*p == '+' || *p == '-') p = skipwhite(p + 1); --- 12318,12324 ---- } } ! p = skipwhite(tv_get_string(&argvars[0])); isneg = (*p == '-'); if (*p == '+' || *p == '-') p = skipwhite(p + 1); *************** *** 12351,12361 **** rettv->v_type = VAR_STRING; ! p = get_tv_string(&argvars[0]); if (argvars[1].v_type == VAR_UNKNOWN) seconds = time(NULL); else ! seconds = (time_t)get_tv_number(&argvars[1]); curtime = localtime(&seconds); /* MSVC returns NULL for an invalid value of seconds. */ if (curtime == NULL) --- 12351,12361 ---- rettv->v_type = VAR_STRING; ! p = tv_get_string(&argvars[0]); if (argvars[1].v_type == VAR_UNKNOWN) seconds = time(NULL); else ! seconds = (time_t)tv_get_number(&argvars[1]); curtime = localtime(&seconds); /* MSVC returns NULL for an invalid value of seconds. */ if (curtime == NULL) *************** *** 12409,12419 **** int charidx; rettv->vval.v_number = -1; ! str = get_tv_string_chk(&argvars[0]); if (str == NULL) return; len = (int)STRLEN(str); ! charidx = (int)get_tv_number_chk(&argvars[1], &error); if (error) return; #ifdef FEAT_MBYTE --- 12409,12419 ---- int charidx; rettv->vval.v_number = -1; ! str = tv_get_string_chk(&argvars[0]); if (str == NULL) return; len = (int)STRLEN(str); ! charidx = (int)tv_get_number_chk(&argvars[1], &error); if (error) return; #ifdef FEAT_MBYTE *************** *** 12450,12457 **** char_u *pos; int start_idx; ! needle = get_tv_string_chk(&argvars[1]); ! save_haystack = haystack = get_tv_string_buf_chk(&argvars[0], buf); rettv->vval.v_number = -1; if (needle == NULL || haystack == NULL) return; /* type error; errmsg already given */ --- 12450,12457 ---- char_u *pos; int start_idx; ! needle = tv_get_string_chk(&argvars[1]); ! save_haystack = haystack = tv_get_string_buf_chk(&argvars[0], buf); rettv->vval.v_number = -1; if (needle == NULL || haystack == NULL) return; /* type error; errmsg already given */ *************** *** 12460,12466 **** { int error = FALSE; ! start_idx = (int)get_tv_number_chk(&argvars[2], &error); if (error || start_idx >= (int)STRLEN(haystack)) return; if (start_idx >= 0) --- 12460,12466 ---- { int error = FALSE; ! start_idx = (int)tv_get_number_chk(&argvars[2], &error); if (error || start_idx >= (int)STRLEN(haystack)) return; if (start_idx >= 0) *************** *** 12496,12502 **** f_strlen(typval_T *argvars, typval_T *rettv) { rettv->vval.v_number = (varnumber_T)(STRLEN( ! get_tv_string(&argvars[0]))); } /* --- 12496,12502 ---- f_strlen(typval_T *argvars, typval_T *rettv) { rettv->vval.v_number = (varnumber_T)(STRLEN( ! tv_get_string(&argvars[0]))); } /* *************** *** 12505,12511 **** static void f_strchars(typval_T *argvars, typval_T *rettv) { ! char_u *s = get_tv_string(&argvars[0]); int skipcc = 0; #ifdef FEAT_MBYTE varnumber_T len = 0; --- 12505,12511 ---- static void f_strchars(typval_T *argvars, typval_T *rettv) { ! char_u *s = tv_get_string(&argvars[0]); int skipcc = 0; #ifdef FEAT_MBYTE varnumber_T len = 0; *************** *** 12513,12519 **** #endif if (argvars[1].v_type != VAR_UNKNOWN) ! skipcc = (int)get_tv_number_chk(&argvars[1], NULL); if (skipcc < 0 || skipcc > 1) EMSG(_(e_invarg)); else --- 12513,12519 ---- #endif if (argvars[1].v_type != VAR_UNKNOWN) ! skipcc = (int)tv_get_number_chk(&argvars[1], NULL); if (skipcc < 0 || skipcc > 1) EMSG(_(e_invarg)); else *************** *** 12538,12548 **** static void f_strdisplaywidth(typval_T *argvars, typval_T *rettv) { ! char_u *s = get_tv_string(&argvars[0]); int col = 0; if (argvars[1].v_type != VAR_UNKNOWN) ! col = (int)get_tv_number(&argvars[1]); rettv->vval.v_number = (varnumber_T)(linetabsize_col(col, s) - col); } --- 12538,12548 ---- static void f_strdisplaywidth(typval_T *argvars, typval_T *rettv) { ! char_u *s = tv_get_string(&argvars[0]); int col = 0; if (argvars[1].v_type != VAR_UNKNOWN) ! col = (int)tv_get_number(&argvars[1]); rettv->vval.v_number = (varnumber_T)(linetabsize_col(col, s) - col); } *************** *** 12553,12559 **** static void f_strwidth(typval_T *argvars, typval_T *rettv) { ! char_u *s = get_tv_string(&argvars[0]); rettv->vval.v_number = (varnumber_T)( #ifdef FEAT_MBYTE --- 12553,12559 ---- static void f_strwidth(typval_T *argvars, typval_T *rettv) { ! char_u *s = tv_get_string(&argvars[0]); rettv->vval.v_number = (varnumber_T)( #ifdef FEAT_MBYTE *************** *** 12579,12588 **** int slen; int error = FALSE; ! p = get_tv_string(&argvars[0]); slen = (int)STRLEN(p); ! nchar = (int)get_tv_number_chk(&argvars[1], &error); if (!error) { if (nchar > 0) --- 12579,12588 ---- int slen; int error = FALSE; ! p = tv_get_string(&argvars[0]); slen = (int)STRLEN(p); ! nchar = (int)tv_get_number_chk(&argvars[1], &error); if (!error) { if (nchar > 0) *************** *** 12595,12601 **** nbyte = nchar; if (argvars[2].v_type != VAR_UNKNOWN) { ! charlen = (int)get_tv_number(&argvars[2]); while (charlen > 0 && nbyte + len < slen) { int off = nbyte + len; --- 12595,12601 ---- nbyte = nchar; if (argvars[2].v_type != VAR_UNKNOWN) { ! charlen = (int)tv_get_number(&argvars[2]); while (charlen > 0 && nbyte + len < slen) { int off = nbyte + len; *************** *** 12646,12659 **** int slen; int error = FALSE; ! p = get_tv_string(&argvars[0]); slen = (int)STRLEN(p); ! n = (int)get_tv_number_chk(&argvars[1], &error); if (error) len = 0; else if (argvars[2].v_type != VAR_UNKNOWN) ! len = (int)get_tv_number(&argvars[2]); else len = slen - n; /* default len: all bytes that are available. */ --- 12646,12659 ---- int slen; int error = FALSE; ! p = tv_get_string(&argvars[0]); slen = (int)STRLEN(p); ! n = (int)tv_get_number_chk(&argvars[1], &error); if (error) len = 0; else if (argvars[2].v_type != VAR_UNKNOWN) ! len = (int)tv_get_number(&argvars[2]); else len = slen - n; /* default len: all bytes that are available. */ *************** *** 12690,12697 **** char_u *lastmatch = NULL; int haystack_len, end_idx; ! needle = get_tv_string_chk(&argvars[1]); ! haystack = get_tv_string_buf_chk(&argvars[0], buf); rettv->vval.v_number = -1; if (needle == NULL || haystack == NULL) --- 12690,12697 ---- char_u *lastmatch = NULL; int haystack_len, end_idx; ! needle = tv_get_string_chk(&argvars[1]); ! haystack = tv_get_string_buf_chk(&argvars[0], buf); rettv->vval.v_number = -1; if (needle == NULL || haystack == NULL) *************** *** 12701,12707 **** if (argvars[2].v_type != VAR_UNKNOWN) { /* Third argument: upper limit for index */ ! end_idx = (int)get_tv_number_chk(&argvars[2], NULL); if (end_idx < 0) return; /* can never find a match */ } --- 12701,12707 ---- if (argvars[2].v_type != VAR_UNKNOWN) { /* Third argument: upper limit for index */ ! end_idx = (int)tv_get_number_chk(&argvars[2], NULL); if (end_idx < 0) return; /* can never find a match */ } *************** *** 12737,12743 **** f_strtrans(typval_T *argvars, typval_T *rettv) { rettv->v_type = VAR_STRING; ! rettv->vval.v_string = transstr(get_tv_string(&argvars[0])); } /* --- 12737,12743 ---- f_strtrans(typval_T *argvars, typval_T *rettv) { rettv->v_type = VAR_STRING; ! rettv->vval.v_string = transstr(tv_get_string(&argvars[0])); } /* *************** *** 12750,12756 **** int no; int retList = 0; ! no = (int)get_tv_number_chk(&argvars[0], &error); if (error) return; if (no < 0 || no >= NSUBEXP) --- 12750,12756 ---- int no; int retList = 0; ! no = (int)tv_get_number_chk(&argvars[0], &error); if (error) return; if (no < 0 || no >= NSUBEXP) *************** *** 12759,12765 **** return; } if (argvars[1].v_type != VAR_UNKNOWN) ! retList = (int)get_tv_number_chk(&argvars[1], &error); if (error) return; --- 12759,12765 ---- return; } if (argvars[1].v_type != VAR_UNKNOWN) ! retList = (int)tv_get_number_chk(&argvars[1], &error); if (error) return; *************** *** 12785,12800 **** char_u subbuf[NUMBUFLEN]; char_u flagsbuf[NUMBUFLEN]; ! char_u *str = get_tv_string_chk(&argvars[0]); ! char_u *pat = get_tv_string_buf_chk(&argvars[1], patbuf); char_u *sub = NULL; typval_T *expr = NULL; ! char_u *flg = get_tv_string_buf_chk(&argvars[3], flagsbuf); if (argvars[2].v_type == VAR_FUNC || argvars[2].v_type == VAR_PARTIAL) expr = &argvars[2]; else ! sub = get_tv_string_buf_chk(&argvars[2], subbuf); rettv->v_type = VAR_STRING; if (str == NULL || pat == NULL || (sub == NULL && expr == NULL) --- 12785,12800 ---- char_u subbuf[NUMBUFLEN]; char_u flagsbuf[NUMBUFLEN]; ! char_u *str = tv_get_string_chk(&argvars[0]); ! char_u *pat = tv_get_string_buf_chk(&argvars[1], patbuf); char_u *sub = NULL; typval_T *expr = NULL; ! char_u *flg = tv_get_string_buf_chk(&argvars[3], flagsbuf); if (argvars[2].v_type == VAR_FUNC || argvars[2].v_type == VAR_PARTIAL) expr = &argvars[2]; else ! sub = tv_get_string_buf_chk(&argvars[2], subbuf); rettv->v_type = VAR_STRING; if (str == NULL || pat == NULL || (sub == NULL && expr == NULL) *************** *** 12811,12817 **** f_swapinfo(typval_T *argvars, typval_T *rettv) { if (rettv_dict_alloc(rettv) == OK) ! get_b0_dict(get_tv_string(argvars), rettv->vval.v_dict); } /* --- 12811,12817 ---- f_swapinfo(typval_T *argvars, typval_T *rettv) { if (rettv_dict_alloc(rettv) == OK) ! get_b0_dict(tv_get_string(argvars), rettv->vval.v_dict); } /* *************** *** 12844,12852 **** int trans; int transerr = FALSE; ! lnum = get_tv_lnum(argvars); /* -1 on type error */ ! col = (linenr_T)get_tv_number(&argvars[1]) - 1; /* -1 on type error */ ! trans = (int)get_tv_number_chk(&argvars[2], &transerr); if (!transerr && lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count && col >= 0 && col < (long)STRLEN(ml_get(lnum))) --- 12844,12852 ---- int trans; int transerr = FALSE; ! lnum = tv_get_lnum(argvars); /* -1 on type error */ ! col = (linenr_T)tv_get_number(&argvars[1]) - 1; /* -1 on type error */ ! trans = (int)tv_get_number_chk(&argvars[2], &transerr); if (!transerr && lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count && col >= 0 && col < (long)STRLEN(ml_get(lnum))) *************** *** 12870,12880 **** char_u modebuf[NUMBUFLEN]; int modec; ! id = (int)get_tv_number(&argvars[0]); ! what = get_tv_string(&argvars[1]); if (argvars[2].v_type != VAR_UNKNOWN) { ! mode = get_tv_string_buf(&argvars[2], modebuf); modec = TOLOWER_ASC(mode[0]); if (modec != 't' && modec != 'c' && modec != 'g') modec = 0; /* replace invalid with current */ --- 12870,12880 ---- char_u modebuf[NUMBUFLEN]; int modec; ! id = (int)tv_get_number(&argvars[0]); ! what = tv_get_string(&argvars[1]); if (argvars[2].v_type != VAR_UNKNOWN) { ! mode = tv_get_string_buf(&argvars[2], modebuf); modec = TOLOWER_ASC(mode[0]); if (modec != 't' && modec != 'c' && modec != 'g') modec = 0; /* replace invalid with current */ *************** *** 12957,12963 **** int id; #ifdef FEAT_SYN_HL ! id = (int)get_tv_number(&argvars[0]); if (id > 0) id = syn_get_final_id(id); --- 12957,12963 ---- int id; #ifdef FEAT_SYN_HL ! id = (int)tv_get_number(&argvars[0]); if (id > 0) id = syn_get_final_id(id); *************** *** 12986,12993 **** rettv_list_set(rettv, NULL); #if defined(FEAT_SYN_HL) && defined(FEAT_CONCEAL) ! lnum = get_tv_lnum(argvars); /* -1 on type error */ ! col = (colnr_T)get_tv_number(&argvars[1]) - 1; /* -1 on type error */ vim_memset(str, NUL, sizeof(str)); --- 12986,12993 ---- rettv_list_set(rettv, NULL); #if defined(FEAT_SYN_HL) && defined(FEAT_CONCEAL) ! lnum = tv_get_lnum(argvars); /* -1 on type error */ ! col = (colnr_T)tv_get_number(&argvars[1]) - 1; /* -1 on type error */ vim_memset(str, NUL, sizeof(str)); *************** *** 13043,13050 **** rettv_list_set(rettv, NULL); #ifdef FEAT_SYN_HL ! lnum = get_tv_lnum(argvars); /* -1 on type error */ ! col = (colnr_T)get_tv_number(&argvars[1]) - 1; /* -1 on type error */ if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count && col >= 0 && col <= (long)STRLEN(ml_get(lnum)) --- 13043,13050 ---- rettv_list_set(rettv, NULL); #ifdef FEAT_SYN_HL ! lnum = tv_get_lnum(argvars); /* -1 on type error */ ! col = (colnr_T)tv_get_number(&argvars[1]) - 1; /* -1 on type error */ if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count && col >= 0 && col <= (long)STRLEN(ml_get(lnum)) *************** *** 13138,13144 **** size_t len; char_u buf[NUMBUFLEN]; ! p = get_tv_string_buf_chk(&argvars[1], buf); if (p == NULL) { fclose(fd); --- 13138,13144 ---- size_t len; char_u buf[NUMBUFLEN]; ! p = tv_get_string_buf_chk(&argvars[1], buf); if (p == NULL) { fclose(fd); *************** *** 13171,13177 **** char_u *end; int i; ! res = get_cmd_output(get_tv_string(&argvars[0]), infile, flags, &len); if (res == NULL) goto errret; --- 13171,13177 ---- char_u *end; int i; ! res = get_cmd_output(tv_get_string(&argvars[0]), infile, flags, &len); if (res == NULL) goto errret; *************** *** 13211,13217 **** } else { ! res = get_cmd_output(get_tv_string(&argvars[0]), infile, flags, NULL); #ifdef USE_CR /* translate into */ if (res != NULL) --- 13211,13217 ---- } else { ! res = get_cmd_output(tv_get_string(&argvars[0]), infile, flags, NULL); #ifdef USE_CR /* translate into */ if (res != NULL) *************** *** 13289,13295 **** wp = firstwin; else { ! tp = find_tabpage((int)get_tv_number(&argvars[0])); if (tp != NULL) wp = (tp == curtab) ? firstwin : tp->tp_firstwin; } --- 13289,13295 ---- wp = firstwin; else { ! tp = find_tabpage((int)tv_get_number(&argvars[0])); if (tp != NULL) wp = (tp == curtab) ? firstwin : tp->tp_firstwin; } *************** *** 13313,13319 **** if (argvars[0].v_type != VAR_UNKNOWN) { ! arg = get_tv_string_chk(&argvars[0]); nr = 0; if (arg != NULL) { --- 13313,13319 ---- if (argvars[0].v_type != VAR_UNKNOWN) { ! arg = tv_get_string_chk(&argvars[0]); nr = 0; if (arg != NULL) { *************** *** 13343,13349 **** twin = (tp == curtab) ? curwin : tp->tp_curwin; if (argvar->v_type != VAR_UNKNOWN) { ! arg = get_tv_string_chk(argvar); if (arg == NULL) nr = 0; /* type error; errmsg already given */ else if (STRCMP(arg, "$") == 0) --- 13343,13349 ---- twin = (tp == curtab) ? curwin : tp->tp_curwin; if (argvar->v_type != VAR_UNKNOWN) { ! arg = tv_get_string_chk(argvar); if (arg == NULL) nr = 0; /* type error; errmsg already given */ else if (STRCMP(arg, "$") == 0) *************** *** 13385,13391 **** int nr = 1; tabpage_T *tp; ! tp = find_tabpage((int)get_tv_number(&argvars[0])); if (tp == NULL) nr = 0; else --- 13385,13391 ---- int nr = 1; tabpage_T *tp; ! tp = find_tabpage((int)tv_get_number(&argvars[0])); if (tp == NULL) nr = 0; else *************** *** 13426,13439 **** char_u *fname = NULL; char_u *tag_pattern; ! tag_pattern = get_tv_string(&argvars[0]); rettv->vval.v_number = FALSE; if (*tag_pattern == NUL) return; if (argvars[1].v_type != VAR_UNKNOWN) ! fname = get_tv_string(&argvars[1]); if (rettv_list_alloc(rettv) == OK) (void)get_tags(rettv->vval.v_list, tag_pattern, fname); } --- 13426,13439 ---- char_u *fname = NULL; char_u *tag_pattern; ! tag_pattern = tv_get_string(&argvars[0]); rettv->vval.v_number = FALSE; if (*tag_pattern == NUL) return; if (argvars[1].v_type != VAR_UNKNOWN) ! fname = tv_get_string(&argvars[1]); if (rettv_list_alloc(rettv) == OK) (void)get_tags(rettv->vval.v_list, tag_pattern, fname); } *************** *** 13544,13550 **** f_test_feedinput(typval_T *argvars, typval_T *rettv UNUSED) { #ifdef USE_INPUT_BUF ! char_u *val = get_tv_string_chk(&argvars[0]); if (val != NULL) { --- 13544,13550 ---- f_test_feedinput(typval_T *argvars, typval_T *rettv UNUSED) { #ifdef USE_INPUT_BUF ! char_u *val = tv_get_string_chk(&argvars[0]); if (val != NULL) { *************** *** 13566,13572 **** EMSG(_(e_invarg)); else { ! name = get_tv_string(&argvars[0]); if (reset_option_was_set(name) == FAIL) EMSG2(_(e_invarg2), name); } --- 13566,13572 ---- EMSG(_(e_invarg)); else { ! name = tv_get_string(&argvars[0]); if (reset_option_was_set(name) == FAIL) EMSG2(_(e_invarg2), name); } *************** *** 13587,13594 **** EMSG(_(e_invarg)); else { ! name = get_tv_string_chk(&argvars[0]); ! val = (int)get_tv_number(&argvars[1]); if (STRCMP(name, (char_u *)"redraw") == 0) disable_redraw_for_testing = val; --- 13587,13594 ---- EMSG(_(e_invarg)); else { ! name = tv_get_string_chk(&argvars[0]); ! val = (int)tv_get_number(&argvars[1]); if (STRCMP(name, (char_u *)"redraw") == 0) disable_redraw_for_testing = val; *************** *** 13646,13652 **** static void f_test_ignore_error(typval_T *argvars, typval_T *rettv UNUSED) { ! ignore_error_for_testing(get_tv_string(&argvars[0])); } #ifdef FEAT_JOB_CHANNEL --- 13646,13652 ---- static void f_test_ignore_error(typval_T *argvars, typval_T *rettv UNUSED) { ! ignore_error_for_testing(tv_get_string(&argvars[0])); } #ifdef FEAT_JOB_CHANNEL *************** *** 13709,13717 **** EMSG(_(e_invarg)); return; } ! which = get_tv_string(&argvars[0]); ! value = get_tv_number(&argvars[1]); ! dragging = get_tv_number(&argvars[2]); if (STRCMP(which, "left") == 0) sb = &curwin->w_scrollbars[SBAR_LEFT]; --- 13709,13717 ---- EMSG(_(e_invarg)); return; } ! which = tv_get_string(&argvars[0]); ! value = tv_get_number(&argvars[1]); ! dragging = tv_get_number(&argvars[2]); if (STRCMP(which, "left") == 0) sb = &curwin->w_scrollbars[SBAR_LEFT]; *************** *** 13735,13741 **** static void f_test_settime(typval_T *argvars, typval_T *rettv UNUSED) { ! time_for_testing = (time_t)get_tv_number(&argvars[0]); } #if defined(FEAT_JOB_CHANNEL) || defined(FEAT_TIMERS) || defined(PROTO) --- 13735,13741 ---- static void f_test_settime(typval_T *argvars, typval_T *rettv UNUSED) { ! time_for_testing = (time_t)tv_get_number(&argvars[0]); } #if defined(FEAT_JOB_CHANNEL) || defined(FEAT_TIMERS) || defined(PROTO) *************** *** 13798,13804 **** EMSG(_(e_number_exp)); else { ! timer = find_timer((int)get_tv_number(&argvars[0])); if (timer != NULL) add_timer_info(rettv, timer); } --- 13798,13804 ---- EMSG(_(e_number_exp)); else { ! timer = find_timer((int)tv_get_number(&argvars[0])); if (timer != NULL) add_timer_info(rettv, timer); } *************** *** 13814,13826 **** f_timer_pause(typval_T *argvars, typval_T *rettv UNUSED) { timer_T *timer = NULL; ! int paused = (int)get_tv_number(&argvars[1]); if (argvars[0].v_type != VAR_NUMBER) EMSG(_(e_number_exp)); else { ! timer = find_timer((int)get_tv_number(&argvars[0])); if (timer != NULL) timer->tr_paused = paused; } --- 13814,13826 ---- f_timer_pause(typval_T *argvars, typval_T *rettv UNUSED) { timer_T *timer = NULL; ! int paused = (int)tv_get_number(&argvars[1]); if (argvars[0].v_type != VAR_NUMBER) EMSG(_(e_number_exp)); else { ! timer = find_timer((int)tv_get_number(&argvars[0])); if (timer != NULL) timer->tr_paused = paused; } *************** *** 13832,13838 **** static void f_timer_start(typval_T *argvars, typval_T *rettv) { ! long msec = (long)get_tv_number(&argvars[0]); timer_T *timer; int repeat = 0; char_u *callback; --- 13832,13838 ---- static void f_timer_start(typval_T *argvars, typval_T *rettv) { ! long msec = (long)tv_get_number(&argvars[0]); timer_T *timer; int repeat = 0; char_u *callback; *************** *** 13847,13853 **** if (argvars[2].v_type != VAR_DICT || (dict = argvars[2].vval.v_dict) == NULL) { ! EMSG2(_(e_invarg2), get_tv_string(&argvars[2])); return; } if (dict_find(dict, (char_u *)"repeat", -1) != NULL) --- 13847,13853 ---- if (argvars[2].v_type != VAR_DICT || (dict = argvars[2].vval.v_dict) == NULL) { ! EMSG2(_(e_invarg2), tv_get_string(&argvars[2])); return; } if (dict_find(dict, (char_u *)"repeat", -1) != NULL) *************** *** 13886,13892 **** EMSG(_(e_number_exp)); return; } ! timer = find_timer((int)get_tv_number(&argvars[0])); if (timer != NULL) stop_timer(timer); } --- 13886,13892 ---- EMSG(_(e_number_exp)); return; } ! timer = find_timer((int)tv_get_number(&argvars[0])); if (timer != NULL) stop_timer(timer); } *************** *** 13908,13914 **** f_tolower(typval_T *argvars, typval_T *rettv) { rettv->v_type = VAR_STRING; ! rettv->vval.v_string = strlow_save(get_tv_string(&argvars[0])); } /* --- 13908,13914 ---- f_tolower(typval_T *argvars, typval_T *rettv) { rettv->v_type = VAR_STRING; ! rettv->vval.v_string = strlow_save(tv_get_string(&argvars[0])); } /* *************** *** 13918,13924 **** f_toupper(typval_T *argvars, typval_T *rettv) { rettv->v_type = VAR_STRING; ! rettv->vval.v_string = strup_save(get_tv_string(&argvars[0])); } /* --- 13918,13924 ---- f_toupper(typval_T *argvars, typval_T *rettv) { rettv->v_type = VAR_STRING; ! rettv->vval.v_string = strup_save(tv_get_string(&argvars[0])); } /* *************** *** 13944,13952 **** char_u buf2[NUMBUFLEN]; garray_T ga; ! in_str = get_tv_string(&argvars[0]); ! fromstr = get_tv_string_buf_chk(&argvars[1], buf); ! tostr = get_tv_string_buf_chk(&argvars[2], buf2); /* Default return value: empty string. */ rettv->v_type = VAR_STRING; --- 13944,13952 ---- char_u buf2[NUMBUFLEN]; garray_T ga; ! in_str = tv_get_string(&argvars[0]); ! fromstr = tv_get_string_buf_chk(&argvars[1], buf); ! tostr = tv_get_string_buf_chk(&argvars[2], buf2); /* Default return value: empty string. */ rettv->v_type = VAR_STRING; *************** *** 14050,14056 **** { char_u buf1[NUMBUFLEN]; char_u buf2[NUMBUFLEN]; ! char_u *head = get_tv_string_buf_chk(&argvars[0], buf1); char_u *mask = NULL; char_u *tail; char_u *prev; --- 14050,14056 ---- { char_u buf1[NUMBUFLEN]; char_u buf2[NUMBUFLEN]; ! char_u *head = tv_get_string_buf_chk(&argvars[0], buf1); char_u *mask = NULL; char_u *tail; char_u *prev; *************** *** 14065,14071 **** } if (argvars[1].v_type == VAR_STRING) ! mask = get_tv_string_buf_chk(&argvars[1], buf2); while (*head != NUL) { --- 14065,14071 ---- } if (argvars[1].v_type == VAR_STRING) ! mask = tv_get_string_buf_chk(&argvars[1], buf2); while (*head != NUL) { *************** *** 14169,14175 **** rettv->v_type = VAR_STRING; #ifdef FEAT_PERSISTENT_UNDO { ! char_u *fname = get_tv_string(&argvars[0]); if (*fname == NUL) { --- 14169,14175 ---- rettv->v_type = VAR_STRING; #ifdef FEAT_PERSISTENT_UNDO { ! char_u *fname = tv_get_string(&argvars[0]); if (*fname == NUL) { *************** *** 14332,14338 **** tp = curtab; else { ! tp = find_tabpage((int)get_tv_number(&argvars[0])); if (tp == NULL) return; } --- 14332,14338 ---- tp = curtab; else { ! tp = find_tabpage((int)tv_get_number(&argvars[0])); if (tp == NULL) return; } *************** *** 14525,14536 **** if (list == NULL) return; for (li = list->lv_first; li != NULL; li = li->li_next) ! if (get_tv_string_chk(&li->li_tv) == NULL) return; if (argvars[2].v_type != VAR_UNKNOWN) { ! char_u *arg2 = get_tv_string_chk(&argvars[2]); if (arg2 == NULL) return; --- 14525,14536 ---- if (list == NULL) return; for (li = list->lv_first; li != NULL; li = li->li_next) ! if (tv_get_string_chk(&li->li_tv) == NULL) return; if (argvars[2].v_type != VAR_UNKNOWN) { ! char_u *arg2 = tv_get_string_chk(&argvars[2]); if (arg2 == NULL) return; *************** *** 14546,14552 **** #endif } ! fname = get_tv_string_chk(&argvars[1]); if (fname == NULL) return; --- 14546,14552 ---- #endif } ! fname = tv_get_string_chk(&argvars[1]); if (fname == NULL) return; *************** *** 14580,14587 **** static void f_xor(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL) ! ^ get_tv_number_chk(&argvars[1], NULL); } #endif /* FEAT_EVAL */ --- 14580,14587 ---- static void f_xor(typval_T *argvars, typval_T *rettv) { ! rettv->vval.v_number = tv_get_number_chk(&argvars[0], NULL) ! ^ tv_get_number_chk(&argvars[1], NULL); } #endif /* FEAT_EVAL */ *** ../vim-8.1.0614/src/list.c 2018-12-21 15:16:57.479579788 +0100 --- src/list.c 2018-12-21 15:52:39.696996337 +0100 *************** *** 403,409 **** *errorp = TRUE; return -1L; } ! return (long)get_tv_number_chk(&li->li_tv, errorp); } /* --- 403,409 ---- *errorp = TRUE; return -1L; } ! return (long)tv_get_number_chk(&li->li_tv, errorp); } /* *************** *** 420,426 **** EMSGN(_(e_listidx), idx); return NULL; } ! return get_tv_string(&li->li_tv); } /* --- 420,426 ---- EMSGN(_(e_listidx), idx); return NULL; } ! return tv_get_string(&li->li_tv); } /* *************** *** 949,955 **** for (li = list->lv_first; li != NULL; li = li->li_next) { ! for (s = get_tv_string(&li->li_tv); *s != NUL; ++s) { if (*s == '\n') c = putc(NUL, fd); --- 949,955 ---- for (li = list->lv_first; li != NULL; li = li->li_next) { ! for (s = tv_get_string(&li->li_tv); *s != NUL; ++s) { if (*s == '\n') c = putc(NUL, fd); *** ../vim-8.1.0614/src/message.c 2018-11-28 20:38:34.560273411 +0100 --- src/message.c 2018-12-21 16:00:44.977851866 +0100 *************** *** 4137,4143 **** else { ++*idxp; ! n = get_tv_number_chk(&tvs[idx], &err); if (err) n = 0; } --- 4137,4143 ---- else { ++*idxp; ! n = tv_get_number_chk(&tvs[idx], &err); if (err) n = 0; } *************** *** 4146,4152 **** /* * Get string argument from "idxp" entry in "tvs". First entry is 1. ! * If "tofree" is NULL get_tv_string_chk() is used. Some types (e.g. List) * are not converted to a string. * If "tofree" is not NULL echo_string() is used. All types are converted to * a string with the same format as ":echo". The caller must free "*tofree". --- 4146,4152 ---- /* * Get string argument from "idxp" entry in "tvs". First entry is 1. ! * If "tofree" is NULL tv_get_string_chk() is used. Some types (e.g. List) * are not converted to a string. * If "tofree" is not NULL echo_string() is used. All types are converted to * a string with the same format as ":echo". The caller must free "*tofree". *************** *** 4167,4173 **** if (tofree != NULL) s = (char *)echo_string(&tvs[idx], tofree, numbuf, get_copyID()); else ! s = (char *)get_tv_string_chk(&tvs[idx]); } return s; } --- 4167,4173 ---- if (tofree != NULL) s = (char *)echo_string(&tvs[idx], tofree, numbuf, get_copyID()); else ! s = (char *)tv_get_string_chk(&tvs[idx]); } return s; } *** ../vim-8.1.0614/src/tag.c 2018-12-14 15:38:28.331597637 +0100 --- src/tag.c 2018-12-21 15:46:40.487262414 +0100 *************** *** 4212,4218 **** } if ((di = dict_find(d, (char_u *)"curidx", -1)) != NULL) ! tagstack_set_curidx(wp, (int)get_tv_number(&di->di_tv) - 1); return OK; } --- 4212,4218 ---- } if ((di = dict_find(d, (char_u *)"curidx", -1)) != NULL) ! tagstack_set_curidx(wp, (int)tv_get_number(&di->di_tv) - 1); return OK; } *** ../vim-8.1.0614/src/terminal.c 2018-12-20 20:47:28.462655566 +0100 --- src/terminal.c 2018-12-21 16:01:24.609588053 +0100 *************** *** 496,502 **** else if (argvar->v_type != VAR_LIST || argvar->vval.v_list == NULL || argvar->vval.v_list->lv_len < 1 ! || (cmd = get_tv_string_chk( &argvar->vval.v_list->lv_first->li_tv)) == NULL) cmd = (char_u*)""; --- 496,502 ---- else if (argvar->v_type != VAR_LIST || argvar->vval.v_list == NULL || argvar->vval.v_list->lv_len < 1 ! || (cmd = tv_get_string_chk( &argvar->vval.v_list->lv_first->li_tv)) == NULL) cmd = (char_u*)""; *************** *** 569,575 **** for (item = argvar->vval.v_list->lv_first; item != NULL; item = item->li_next) { ! char_u *s = get_tv_string_chk(&item->li_tv); char_u *p; if (s == NULL) --- 569,575 ---- for (item = argvar->vval.v_list->lv_first; item != NULL; item = item->li_next) { ! char_u *s = tv_get_string_chk(&item->li_tv); char_u *p; if (s == NULL) *************** *** 1913,1919 **** type = get_reg_type(c, ®len); for (item = l->lv_first; item != NULL; item = item->li_next) { ! char_u *s = get_tv_string(&item->li_tv); #ifdef WIN3264 char_u *tmp = s; --- 1913,1919 ---- type = get_reg_type(c, ®len); for (item = l->lv_first; item != NULL; item = item->li_next) { ! char_u *s = tv_get_string(&item->li_tv); #ifdef WIN3264 char_u *tmp = s; *************** *** 3455,3461 **** char_u *color_name; guicolor_T guicolor; ! color_name = get_tv_string_chk(&li->li_tv); if (color_name == NULL) return FAIL; --- 3455,3461 ---- char_u *color_name; guicolor_T guicolor; ! color_name = tv_get_string_chk(&li->li_tv); if (color_name == NULL) return FAIL; *************** *** 3497,3503 **** static void handle_drop_command(listitem_T *item) { ! char_u *fname = get_tv_string(&item->li_tv); listitem_T *opt_item = item->li_next; int bufnr; win_T *wp; --- 3497,3503 ---- static void handle_drop_command(listitem_T *item) { ! char_u *fname = tv_get_string(&item->li_tv); listitem_T *opt_item = item->li_next; int bufnr; win_T *wp; *************** *** 3589,3595 **** ch_log(channel, "Missing function arguments for call"); return; } ! func = get_tv_string(&item->li_tv); if (STRNCMP(func, "Tapi_", 5) != 0) { --- 3589,3595 ---- ch_log(channel, "Missing function arguments for call"); return; } ! func = tv_get_string(&item->li_tv); if (STRNCMP(func, "Tapi_", 5) != 0) { *************** *** 3645,3651 **** ch_log(channel, "Missing command"); else { ! char_u *cmd = get_tv_string(&item->li_tv); /* Make sure an invoked command doesn't delete the buffer (and the * terminal) under our fingers. */ --- 3645,3651 ---- ch_log(channel, "Missing command"); else { ! char_u *cmd = tv_get_string(&item->li_tv); /* Make sure an invoked command doesn't delete the buffer (and the * terminal) under our fingers. */ *************** *** 3826,3832 **** { buf_T *buf; ! (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; buf = get_buf_tv(&argvars[0], FALSE); --emsg_off; --- 3826,3832 ---- { buf_T *buf; ! (void)tv_get_number(&argvars[0]); /* issue errmsg if type error */ ++emsg_off; buf = get_buf_tv(&argvars[0], FALSE); --emsg_off; *************** *** 3921,3927 **** } } ! fname = get_tv_string_chk(&argvars[1]); if (fname == NULL) return; if (mch_stat((char *)fname, &st) >= 0) --- 3921,3927 ---- } } ! fname = tv_get_string_chk(&argvars[1]); if (fname == NULL) return; if (mch_stat((char *)fname, &st) >= 0) *************** *** 4370,4378 **** char_u *textline = NULL; /* First open the files. If this fails bail out. */ ! fname1 = get_tv_string_buf_chk(&argvars[0], buf1); if (do_diff) ! fname2 = get_tv_string_buf_chk(&argvars[1], buf2); if (fname1 == NULL || (do_diff && fname2 == NULL)) { EMSG(_(e_invarg)); --- 4370,4378 ---- char_u *textline = NULL; /* First open the files. If this fails bail out. */ ! fname1 = tv_get_string_buf_chk(&argvars[0], buf1); if (do_diff) ! fname2 = tv_get_string_buf_chk(&argvars[1], buf2); if (fname1 == NULL || (do_diff && fname2 == NULL)) { EMSG(_(e_invarg)); *************** *** 4740,4747 **** {"reverse", HL_INVERSE}, }; ! attr = get_tv_number(&argvars[0]); ! name = get_tv_string_chk(&argvars[1]); if (name == NULL) return; --- 4740,4747 ---- {"reverse", HL_INVERSE}, }; ! attr = tv_get_number(&argvars[0]); ! name = tv_get_string_chk(&argvars[1]); if (name == NULL) return; *************** *** 4811,4817 **** && tv->vval.v_string != NULL && STRCMP(tv->vval.v_string, ".") == 0) return term->tl_cursor_pos.row; ! return (int)get_tv_number(tv) - 1; } /* --- 4811,4817 ---- && tv->vval.v_string != NULL && STRCMP(tv->vval.v_string, ".") == 0) return term->tl_cursor_pos.row; ! return (int)tv_get_number(tv) - 1; } /* *************** *** 4911,4919 **** if (buf->b_term->tl_vterm == NULL) return; term = buf->b_term; ! rows = get_tv_number(&argvars[1]); rows = rows <= 0 ? term->tl_rows : rows; ! cols = get_tv_number(&argvars[2]); cols = cols <= 0 ? term->tl_cols : cols; vterm_set_size(term->tl_vterm, rows, cols); /* handle_resize() will resize the windows */ --- 4911,4919 ---- if (buf->b_term->tl_vterm == NULL) return; term = buf->b_term; ! rows = tv_get_number(&argvars[1]); rows = rows <= 0 ? term->tl_rows : rows; ! cols = tv_get_number(&argvars[2]); cols = cols <= 0 ? term->tl_cols : cols; vterm_set_size(term->tl_vterm, rows, cols); /* handle_resize() will resize the windows */ *************** *** 4977,4983 **** if (buf == NULL) return; if (argvars[1].v_type != VAR_UNKNOWN) ! num = get_tv_number(&argvars[1]); switch (num) { --- 4977,4983 ---- if (buf == NULL) return; if (argvars[1].v_type != VAR_UNKNOWN) ! num = tv_get_number(&argvars[1]); switch (num) { *************** *** 4990,4996 **** p = buf->b_term->tl_job->jv_tty_in; break; default: ! EMSG2(_(e_invarg2), get_tv_string(&argvars[1])); return; } if (p != NULL) --- 4990,4996 ---- p = buf->b_term->tl_job->jv_tty_in; break; default: ! EMSG2(_(e_invarg2), tv_get_string(&argvars[1])); return; } if (p != NULL) *************** *** 5139,5145 **** if (buf == NULL) return; ! msg = get_tv_string_chk(&argvars[1]); if (msg == NULL) return; term = buf->b_term; --- 5139,5145 ---- if (buf == NULL) return; ! msg = tv_get_string_chk(&argvars[1]); if (msg == NULL) return; term = buf->b_term; *************** *** 5241,5247 **** return; term = buf->b_term; vim_free(term->tl_command); ! cmd = get_tv_string_chk(&argvars[1]); if (cmd != NULL) term->tl_command = vim_strsave(cmd); else --- 5241,5247 ---- return; term = buf->b_term; vim_free(term->tl_command); ! cmd = tv_get_string_chk(&argvars[1]); if (cmd != NULL) term->tl_command = vim_strsave(cmd); else *************** *** 5263,5269 **** return; term = buf->b_term; vim_free(term->tl_kill); ! how = get_tv_string_chk(&argvars[1]); if (how != NULL) term->tl_kill = vim_strsave(how); else --- 5263,5269 ---- return; term = buf->b_term; vim_free(term->tl_kill); ! how = tv_get_string_chk(&argvars[1]); if (how != NULL) term->tl_kill = vim_strsave(how); else *************** *** 5347,5353 **** /* Wait for some time for any channel I/O. */ if (argvars[1].v_type != VAR_UNKNOWN) ! wait = get_tv_number(&argvars[1]); ui_delay(wait, TRUE); mch_check_messages(); --- 5347,5353 ---- /* Wait for some time for any channel I/O. */ if (argvars[1].v_type != VAR_UNKNOWN) ! wait = tv_get_number(&argvars[1]); ui_delay(wait, TRUE); mch_check_messages(); *** ../vim-8.1.0614/src/textprop.c 2018-12-16 14:37:35.845271247 +0100 --- src/textprop.c 2018-12-21 15:53:27.052698970 +0100 *************** *** 154,161 **** textprop_T tmp_prop; int i; ! lnum = get_tv_number(&argvars[0]); ! col = get_tv_number(&argvars[1]); if (col < 1) { EMSGN(_(e_invalid_col), (long)col); --- 154,161 ---- textprop_T tmp_prop; int i; ! lnum = tv_get_number(&argvars[0]); ! col = tv_get_number(&argvars[1]); if (col < 1) { EMSGN(_(e_invalid_col), (long)col); *************** *** 352,365 **** void f_prop_clear(typval_T *argvars, typval_T *rettv UNUSED) { ! linenr_T start = get_tv_number(&argvars[0]); linenr_T end = start; linenr_T lnum; buf_T *buf = curbuf; if (argvars[1].v_type != VAR_UNKNOWN) { ! end = get_tv_number(&argvars[1]); if (argvars[2].v_type != VAR_UNKNOWN) { if (get_bufnr_from_arg(&argvars[2], &buf) == FAIL) --- 352,365 ---- void f_prop_clear(typval_T *argvars, typval_T *rettv UNUSED) { ! linenr_T start = tv_get_number(&argvars[0]); linenr_T end = start; linenr_T lnum; buf_T *buf = curbuf; if (argvars[1].v_type != VAR_UNKNOWN) { ! end = tv_get_number(&argvars[1]); if (argvars[2].v_type != VAR_UNKNOWN) { if (get_bufnr_from_arg(&argvars[2], &buf) == FAIL) *************** *** 405,411 **** void f_prop_list(typval_T *argvars, typval_T *rettv) { ! linenr_T lnum = get_tv_number(&argvars[0]); buf_T *buf = curbuf; if (argvars[1].v_type != VAR_UNKNOWN) --- 405,411 ---- void f_prop_list(typval_T *argvars, typval_T *rettv) { ! linenr_T lnum = tv_get_number(&argvars[0]); buf_T *buf = curbuf; if (argvars[1].v_type != VAR_UNKNOWN) *************** *** 476,485 **** if (argvars[1].v_type != VAR_UNKNOWN) { ! start = get_tv_number(&argvars[1]); end = start; if (argvars[2].v_type != VAR_UNKNOWN) ! end = get_tv_number(&argvars[2]); if (start < 1 || end < 1) { EMSG(_(e_invrange)); --- 476,485 ---- if (argvars[1].v_type != VAR_UNKNOWN) { ! start = tv_get_number(&argvars[1]); end = start; if (argvars[2].v_type != VAR_UNKNOWN) ! end = tv_get_number(&argvars[2]); if (start < 1 || end < 1) { EMSG(_(e_invrange)); *************** *** 586,592 **** dictitem_T *di; proptype_T *prop; ! name = get_tv_string(&argvars[0]); if (*name == NUL) { EMSG(_(e_invarg)); --- 586,592 ---- dictitem_T *di; proptype_T *prop; ! name = tv_get_string(&argvars[0]); if (*name == NUL) { EMSG(_(e_invarg)); *************** *** 656,667 **** di = dict_find(dict, (char_u *)"priority", -1); if (di != NULL) ! prop->pt_priority = get_tv_number(&di->di_tv); di = dict_find(dict, (char_u *)"start_incl", -1); if (di != NULL) { ! if (get_tv_number(&di->di_tv)) prop->pt_flags |= PT_FLAG_INS_START_INCL; else prop->pt_flags &= ~PT_FLAG_INS_START_INCL; --- 656,667 ---- di = dict_find(dict, (char_u *)"priority", -1); if (di != NULL) ! prop->pt_priority = tv_get_number(&di->di_tv); di = dict_find(dict, (char_u *)"start_incl", -1); if (di != NULL) { ! if (tv_get_number(&di->di_tv)) prop->pt_flags |= PT_FLAG_INS_START_INCL; else prop->pt_flags &= ~PT_FLAG_INS_START_INCL; *************** *** 670,676 **** di = dict_find(dict, (char_u *)"end_incl", -1); if (di != NULL) { ! if (get_tv_number(&di->di_tv)) prop->pt_flags |= PT_FLAG_INS_END_INCL; else prop->pt_flags &= ~PT_FLAG_INS_END_INCL; --- 670,676 ---- di = dict_find(dict, (char_u *)"end_incl", -1); if (di != NULL) { ! if (tv_get_number(&di->di_tv)) prop->pt_flags |= PT_FLAG_INS_END_INCL; else prop->pt_flags &= ~PT_FLAG_INS_END_INCL; *************** *** 706,712 **** buf_T *buf = NULL; hashitem_T *hi; ! name = get_tv_string(&argvars[0]); if (*name == NUL) { EMSG(_(e_invarg)); --- 706,712 ---- buf_T *buf = NULL; hashitem_T *hi; ! name = tv_get_string(&argvars[0]); if (*name == NUL) { EMSG(_(e_invarg)); *************** *** 740,746 **** void f_prop_type_get(typval_T *argvars, typval_T *rettv UNUSED) { ! char_u *name = get_tv_string(&argvars[0]); if (*name == NUL) { --- 740,746 ---- void f_prop_type_get(typval_T *argvars, typval_T *rettv UNUSED) { ! char_u *name = tv_get_string(&argvars[0]); if (*name == NUL) { *** ../vim-8.1.0614/src/window.c 2018-11-10 16:01:23.335381858 +0100 --- src/window.c 2018-12-21 15:50:18.737863579 +0100 *************** *** 6867,6873 **** subli = subl->lv_first; if (subli == NULL) goto fail; ! lnum = get_tv_number_chk(&subli->li_tv, &error); if (error == TRUE) goto fail; if (lnum == 0) --- 6867,6873 ---- subli = subl->lv_first; if (subli == NULL) goto fail; ! lnum = tv_get_number_chk(&subli->li_tv, &error); if (error == TRUE) goto fail; if (lnum == 0) *************** *** 6879,6891 **** subli = subli->li_next; if (subli != NULL) { ! col = get_tv_number_chk(&subli->li_tv, &error); if (error == TRUE) goto fail; subli = subli->li_next; if (subli != NULL) { ! len = get_tv_number_chk(&subli->li_tv, &error); if (error == TRUE) goto fail; } --- 6879,6891 ---- subli = subli->li_next; if (subli != NULL) { ! col = tv_get_number_chk(&subli->li_tv, &error); if (error == TRUE) goto fail; subli = subli->li_next; if (subli != NULL) { ! len = tv_get_number_chk(&subli->li_tv, &error); if (error == TRUE) goto fail; } *************** *** 7132,7138 **** if (argvars[0].v_type == VAR_UNKNOWN) return curwin->w_id; ! winnr = get_tv_number(&argvars[0]); if (winnr > 0) { if (argvars[1].v_type == VAR_UNKNOWN) --- 7132,7138 ---- if (argvars[0].v_type == VAR_UNKNOWN) return curwin->w_id; ! winnr = tv_get_number(&argvars[0]); if (winnr > 0) { if (argvars[1].v_type == VAR_UNKNOWN) *************** *** 7140,7146 **** else { tabpage_T *tp; ! int tabnr = get_tv_number(&argvars[1]); FOR_ALL_TABPAGES(tp) if (--tabnr == 0) --- 7140,7146 ---- else { tabpage_T *tp; ! int tabnr = tv_get_number(&argvars[1]); FOR_ALL_TABPAGES(tp) if (--tabnr == 0) *************** *** 7164,7170 **** { win_T *wp; tabpage_T *tp; ! int id = get_tv_number(&argvars[0]); FOR_ALL_TAB_WINDOWS(tp, wp) if (wp->w_id == id) --- 7164,7170 ---- { win_T *wp; tabpage_T *tp; ! int id = tv_get_number(&argvars[0]); FOR_ALL_TAB_WINDOWS(tp, wp) if (wp->w_id == id) *************** *** 7182,7188 **** tabpage_T *tp; int winnr = 1; int tabnr = 1; ! int id = get_tv_number(&argvars[0]); FOR_ALL_TABPAGES(tp) { --- 7182,7188 ---- tabpage_T *tp; int winnr = 1; int tabnr = 1; ! int id = tv_get_number(&argvars[0]); FOR_ALL_TABPAGES(tp) { *************** *** 7208,7214 **** { win_T *wp; tabpage_T *tp; ! int id = get_tv_number(&argvars[0]); FOR_ALL_TAB_WINDOWS(tp, wp) if (wp->w_id == id) --- 7208,7214 ---- { win_T *wp; tabpage_T *tp; ! int id = tv_get_number(&argvars[0]); FOR_ALL_TAB_WINDOWS(tp, wp) if (wp->w_id == id) *************** *** 7222,7228 **** { win_T *wp; int nr = 1; ! int id = get_tv_number(&argvars[0]); FOR_ALL_WINDOWS(wp) { --- 7222,7228 ---- { win_T *wp; int nr = 1; ! int id = tv_get_number(&argvars[0]); FOR_ALL_WINDOWS(wp) { *************** *** 7238,7244 **** { win_T *wp; tabpage_T *tp; ! int bufnr = get_tv_number(&argvars[0]); FOR_ALL_TAB_WINDOWS(tp, wp) if (wp->w_buffer->b_fnum == bufnr) --- 7238,7244 ---- { win_T *wp; tabpage_T *tp; ! int bufnr = tv_get_number(&argvars[0]); FOR_ALL_TAB_WINDOWS(tp, wp) if (wp->w_buffer->b_fnum == bufnr) *** ../vim-8.1.0614/src/ex_cmds.c 2018-12-21 15:16:57.479579788 +0100 --- src/ex_cmds.c 2018-12-21 15:52:31.953044706 +0100 *************** *** 8913,8919 **** for (li = l->lv_first; li != NULL && !got_int; li = li->li_next) { ++nr; ! fname = get_tv_string(&li->li_tv); if (!message_filtered(fname)) { msg_outnum((long)nr); --- 8913,8919 ---- for (li = l->lv_first; li != NULL && !got_int; li = li->li_next) { ++nr; ! fname = tv_get_string(&li->li_tv); if (!message_filtered(fname)) { msg_outnum((long)nr); *** ../vim-8.1.0614/src/os_unix.c 2018-12-08 14:39:00.055120155 +0100 --- src/os_unix.c 2018-12-21 15:52:50.360929614 +0100 *************** *** 1678,1690 **** /* * An X IO Error handler, used to catch terminal errors. */ ! static int xterm_dpy_was_reset = FALSE; static int x_IOerror_handler(Display *dpy UNUSED) { xterm_dpy = NULL; ! xterm_dpy_was_reset = TRUE; x11_window = 0; x11_display = NULL; xterm_Shell = (Widget)0; --- 1678,1690 ---- /* * An X IO Error handler, used to catch terminal errors. */ ! static int xterm_dpy_retry_count = 0; static int x_IOerror_handler(Display *dpy UNUSED) { xterm_dpy = NULL; ! xterm_dpy_retry_count = 5; // Try reconnecting five times x11_window = 0; x11_display = NULL; xterm_Shell = (Widget)0; *************** *** 1704,1712 **** static void may_restore_clipboard(void) { ! if (xterm_dpy_was_reset) { ! xterm_dpy_was_reset = FALSE; # ifndef LESSTIF_VERSION /* This has been reported to avoid Vim getting stuck. */ --- 1704,1712 ---- static void may_restore_clipboard(void) { ! if (xterm_dpy_retry_count > 0) { ! --xterm_dpy_retry_count; # ifndef LESSTIF_VERSION /* This has been reported to avoid Vim getting stuck. */ *************** *** 5553,5559 **** { typval_T *item = &dict_lookup(hi)->di_tv; ! vim_setenv((char_u*)hi->hi_key, get_tv_string(item)); --todo; } } --- 5553,5559 ---- { typval_T *item = &dict_lookup(hi)->di_tv; ! vim_setenv((char_u*)hi->hi_key, tv_get_string(item)); --todo; } } *************** *** 7494,7499 **** --- 7494,7501 ---- { xterm_dpy = XtOpenDisplay(app_context, xterm_display, "vim_xterm", "Vim_xterm", NULL, 0, &z, &strp); + if (xterm_dpy != NULL) + xterm_dpy_retry_count = 0; #if defined(HAVE_SETJMP_H) mch_endjmp(); #endif *** ../vim-8.1.0614/src/os_win32.c 2018-11-16 16:21:01.641310033 +0100 --- src/os_win32.c 2018-12-21 15:52:57.296886140 +0100 *************** *** 5355,5361 **** { typval_T *item = &dict_lookup(hi)->di_tv; WCHAR *wkey = enc_to_utf16((char_u *)hi->hi_key, NULL); ! WCHAR *wval = enc_to_utf16(get_tv_string(item), NULL); --todo; if (wkey != NULL && wval != NULL) { --- 5355,5361 ---- { typval_T *item = &dict_lookup(hi)->di_tv; WCHAR *wkey = enc_to_utf16((char_u *)hi->hi_key, NULL); ! WCHAR *wval = enc_to_utf16(tv_get_string(item), NULL); --todo; if (wkey != NULL && wval != NULL) { *** ../vim-8.1.0614/src/json.c 2018-09-30 21:43:17.195693290 +0200 --- src/json.c 2018-12-21 15:57:46.355030394 +0100 *************** *** 873,879 **** if (top_item != NULL && top_item->jd_type == JSON_OBJECT_KEY && cur_item != NULL) { ! top_item->jd_key = get_tv_string_buf_chk(cur_item, key_buf); if (top_item->jd_key == NULL) { clear_tv(cur_item); --- 873,879 ---- if (top_item != NULL && top_item->jd_type == JSON_OBJECT_KEY && cur_item != NULL) { ! top_item->jd_key = tv_get_string_buf_chk(cur_item, key_buf); if (top_item->jd_key == NULL) { clear_tv(cur_item); *** ../vim-8.1.0614/src/regexp.c 2018-09-30 21:43:17.203693237 +0200 --- src/regexp.c 2018-12-21 15:58:23.750785268 +0100 *************** *** 7566,7572 **** /* fill_submatch_list() was called */ clear_submatch_list(&matchList); ! eval_result = get_tv_string_buf_chk(&rettv, buf); if (eval_result != NULL) eval_result = vim_strsave(eval_result); clear_tv(&rettv); --- 7566,7572 ---- /* fill_submatch_list() was called */ clear_submatch_list(&matchList); ! eval_result = tv_get_string_buf_chk(&rettv, buf); if (eval_result != NULL) eval_result = vim_strsave(eval_result); clear_tv(&rettv); *** ../vim-8.1.0614/src/edit.c 2018-12-14 15:38:28.327597664 +0100 --- src/edit.c 2018-12-21 15:59:19.326419307 +0100 *************** *** 4363,4369 **** } else { ! word = get_tv_string_chk(tv); vim_memset(cptext, 0, sizeof(cptext)); } if (word == NULL || (!aempty && *word == NUL)) --- 4363,4369 ---- } else { ! word = tv_get_string_chk(tv); vim_memset(cptext, 0, sizeof(cptext)); } if (word == NULL || (!aempty && *word == NUL)) *** ../vim-8.1.0614/src/misc2.c 2018-12-21 15:16:57.479579788 +0100 --- src/misc2.c 2018-12-21 16:00:56.985772017 +0100 *************** *** 6593,6599 **** *argc = 0; for (li = l->lv_first; li != NULL; li = li->li_next) { ! s = get_tv_string_chk(&li->li_tv); if (s == NULL) { int i; --- 6593,6599 ---- *argc = 0; for (li = l->lv_first; li != NULL; li = li->li_next) { ! s = tv_get_string_chk(&li->li_tv); if (s == NULL) { int i; *** ../vim-8.1.0614/src/popupmnu.c 2018-12-01 11:58:44.415064948 +0100 --- src/popupmnu.c 2018-12-21 16:01:04.985718779 +0100 *************** *** 1103,1109 **** return; for (idx = 0, li = list->lv_first; li != NULL; li = li->li_next, ++idx) { ! char_u *text = get_tv_string_chk(&li->li_tv); balloon_array[idx].pum_text = vim_strsave( text == NULL ? (char_u *)"" : text); --- 1103,1109 ---- return; for (idx = 0, li = list->lv_first; li != NULL; li = li->li_next, ++idx) { ! char_u *text = tv_get_string_chk(&li->li_tv); balloon_array[idx].pum_text = vim_strsave( text == NULL ? (char_u *)"" : text); *** ../vim-8.1.0614/src/version.c 2018-12-21 15:16:57.483579762 +0100 --- src/version.c 2018-12-21 16:03:51.828602235 +0100 *************** *** 801,802 **** --- 801,804 ---- { /* Add new patch number below this line */ + /**/ + 615, /**/ -- hundred-and-one symptoms of being an internet addict: 32. You don't know what sex three of your closest friends are, because they have neutral nicknames and you never bothered to ask. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///