@@ -1565,11 +1565,12 @@ eval_expr(arg, nextcmd)
15651565 * Returns OK or FAIL.
15661566 */
15671567 int
1568- call_vim_function(func, argc, argv, safe, rettv)
1568+ call_vim_function(func, argc, argv, safe, str_arg_only, rettv)
15691569 char_u *func;
15701570 int argc;
15711571 char_u **argv;
15721572 int safe; /* use the sandbox */
1573+ int str_arg_only; /* all arguments are strings */
15731574 typval_T *rettv;
15741575{
15751576 typval_T *argvars;
@@ -1594,8 +1595,11 @@ call_vim_function(func, argc, argv, safe, rettv)
15941595 continue;
15951596 }
15961597
1597- /* Recognize a number argument, the others must be strings. */
1598- vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL);
1598+ if (str_arg_only)
1599+ len = 0;
1600+ else
1601+ /* Recognize a number argument, the others must be strings. */
1602+ vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL);
15991603 if (len != 0 && len == (int)STRLEN(argv[i]))
16001604 {
16011605 argvars[i].v_type = VAR_NUMBER;
@@ -1647,7 +1651,8 @@ call_func_retstr(func, argc, argv, safe)
16471651 typval_T rettv;
16481652 char_u *retval;
16491653
1650- if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL)
1654+ /* All arguments are passed as strings, no conversion to number. */
1655+ if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL)
16511656 return NULL;
16521657
16531658 retval = vim_strsave(get_tv_string(&rettv));
@@ -1672,7 +1677,8 @@ call_func_retnr(func, argc, argv, safe)
16721677 typval_T rettv;
16731678 long retval;
16741679
1675- if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL)
1680+ /* All arguments are passed as strings, no conversion to number. */
1681+ if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL)
16761682 return -1;
16771683
16781684 retval = get_tv_number_chk(&rettv, NULL);
@@ -1695,7 +1701,8 @@ call_func_retlist(func, argc, argv, safe)
16951701{
16961702 typval_T rettv;
16971703
1698- if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL)
1704+ /* All arguments are passed as strings, no conversion to number. */
1705+ if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL)
16991706 return NULL;
17001707
17011708 if (rettv.v_type != VAR_LIST)
@@ -12972,7 +12979,7 @@ get_user_input(argvars, rettv, inputdialog)
1297212979 rettv->vval.v_string =
1297312980 getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr,
1297412981 xp_type, xp_arg);
12975- if (rettv->vval.v_string == NULL
12982+ if (inputdialog && rettv->vval.v_string == NULL
1297612983 && argvars[1].v_type != VAR_UNKNOWN
1297712984 && argvars[2].v_type != VAR_UNKNOWN)
1297812985 rettv->vval.v_string = vim_strsave(get_tv_string_buf(
@@ -18632,6 +18639,10 @@ f_winrestview(argvars, rettv)
1863218639 curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol");
1863318640
1863418641 check_cursor();
18642+ win_new_height(curwin, curwin->w_height);
18643+ # ifdef FEAT_VERTSPLIT
18644+ win_new_width(curwin, W_WIDTH(curwin));
18645+ # endif
1863518646 changed_window_setting();
1863618647
1863718648 if (curwin->w_topline == 0)
0 commit comments