Created
July 11, 2012 00:13
-
-
Save mattn/3087076 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff -r 8af0aad3d4eb src/edit.c | |
| --- a/src/edit.c Sat Jun 30 13:34:34 2012 +0200 | |
| +++ b/src/edit.c Wed Jul 11 09:13:09 2012 +0900 | |
| @@ -3954,7 +3954,7 @@ | |
| curbuf_save = curbuf; | |
| /* Call a function, which returns a list or dict. */ | |
| - if (call_vim_function(funcname, 2, args, FALSE, &rettv) == OK) | |
| + if (call_vim_function(funcname, 2, args, FALSE, FALSE, &rettv) == OK) | |
| { | |
| switch (rettv.v_type) | |
| { | |
| diff -r 8af0aad3d4eb src/eval.c | |
| --- a/src/eval.c Sat Jun 30 13:34:34 2012 +0200 | |
| +++ b/src/eval.c Wed Jul 11 09:13:09 2012 +0900 | |
| @@ -1564,11 +1564,12 @@ | |
| * Returns OK or FAIL. | |
| */ | |
| int | |
| -call_vim_function(func, argc, argv, safe, rettv) | |
| +call_vim_function(func, argc, argv, safe, str_arg, rettv) | |
| char_u *func; | |
| int argc; | |
| char_u **argv; | |
| int safe; /* use the sandbox */ | |
| + int str_arg; | |
| typval_T *rettv; | |
| { | |
| typval_T *argvars; | |
| @@ -1594,7 +1595,10 @@ | |
| } | |
| /* Recognize a number argument, the others must be strings. */ | |
| - vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL); | |
| + if (str_arg == TRUE) | |
| + len = 0; | |
| + else | |
| + vim_str2nr(argv[i], NULL, &len, TRUE, TRUE, &n, NULL); | |
| if (len != 0 && len == (int)STRLEN(argv[i])) | |
| { | |
| argvars[i].v_type = VAR_NUMBER; | |
| @@ -1646,7 +1650,7 @@ | |
| typval_T rettv; | |
| char_u *retval; | |
| - if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL) | |
| + if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) | |
| return NULL; | |
| retval = vim_strsave(get_tv_string(&rettv)); | |
| @@ -1671,7 +1675,7 @@ | |
| typval_T rettv; | |
| long retval; | |
| - if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL) | |
| + if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) | |
| return -1; | |
| retval = get_tv_number_chk(&rettv, NULL); | |
| @@ -1694,7 +1698,7 @@ | |
| { | |
| typval_T rettv; | |
| - if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL) | |
| + if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) | |
| return NULL; | |
| if (rettv.v_type != VAR_LIST) | |
| diff -r 8af0aad3d4eb src/proto/eval.pro | |
| --- a/src/proto/eval.pro Sat Jun 30 13:34:34 2012 +0200 | |
| +++ b/src/proto/eval.pro Wed Jul 11 09:13:09 2012 +0900 | |
| @@ -23,7 +23,7 @@ | |
| list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr)); | |
| int get_spellword __ARGS((list_T *list, char_u **pp)); | |
| typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd)); | |
| -int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv)); | |
| +int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, int keep_str, typval_T *rettv)); | |
| void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe)); | |
| long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe)); | |
| void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment