Commit Graph

1590 Commits

Author SHA1 Message Date
James McCoy
123931e65e lint 2017-04-07 16:38:06 -04:00
James McCoy
20dc04470e vim-patch:8.0.0499
Problem:    taglist() does not prioritize tags for a buffer.
Solution:   Add an optional buffer argument. (Duncan McDougall, closes vim/vim#1194)

c6aafbaf3e
2017-04-07 16:18:04 -04:00
Nicolas Hillegeer
1813076c44 eval: delimit string with NUL byte (#6467)
A recent refactor left cpy without a NUL terminator, simplify the code
instead of patching over it.

Instead of plain memcpy, it'd be better to employ harder to misuse string
functions made for this purpose like xstrlcpy(), but path_tail() takes
char_u arguments and returns them, leading to a lot of ugly casting.

Fixes #6431.
2017-04-07 12:29:17 +02:00
James McCoy
bb54d921aa Merge remote-tracking branch 'origin/master' into vim-7.4.2170 2017-04-05 22:39:40 -04:00
ZyX
97a7f4745d eval: Add s flag, use p_fs by default, error out on unknown flag 2017-04-03 02:11:27 +03:00
ZyX
b10880dadc eval: Make writefile() able to disable fsync() 2017-04-02 22:11:35 +03:00
ZyX
19690d4a25 eval: Do not allocate FileDescriptor 2017-04-01 22:26:50 +03:00
ZyX
cc4523013f eval,fileio: Omit additional fsync() call
Fixes #6420
2017-04-01 21:15:13 +03:00
James McCoy
77539eef9b Merge pull request #6397 from jamessan/coverity
Fix latest Coverity issues
2017-03-31 07:52:45 -04:00
James McCoy
338da727cd coverity/161216: Ensure buf is valid for lifetime of defstr
Depending on the type of argument for input()/inputdialog()'s {text}
argument, defstr may point to buf.  Therefore it needs to be in scope
for the lifetime of defstr.

Also, use a different buffer for the handling of the 3rd argument to
input()/inputdialog().  Although the buffer defstr points to is used
immediately, it avoids potential mishaps if the code changes.
2017-03-30 22:30:02 -04:00
Michael Ennen
831eb2a9bf vim-patch:7.4.2104 (#6332)
Problem:    Code duplication when unreferencing a function.
Solution:   De-duplicate.

97baee80f0
2017-03-31 01:07:39 +02:00
ZyX
a1d590a08b *: Use const char * in set_one_cmd_context
Also renames functions added in master and renamed here.
2017-03-29 10:08:46 +03:00
ZyX
f4256243db eval: Fix -Werror=unitialized from QB 2017-03-29 10:08:46 +03:00
ZyX
29bad04f9e eval: Do not supply S_LEN to strncmp
It may be a macro as well.
2017-03-29 10:08:46 +03:00
ZyX
fa852e7cdc eval: Fix extend() behaviour with NULL lists and dictionaries
Ref #4615
Ref vim/vim#768
2017-03-29 10:08:45 +03:00
ZyX
43e9fad1c8 eval: Use tv_is_func in place of ==VAR_FUNC||==VAR_PARTIAL
Also fixes same error as in vim/vim#1557
2017-03-29 10:08:45 +03:00
ZyX
3bf87a5a6b eval: Do not use S_LEN as snprintf argument 2017-03-29 10:08:45 +03:00
ZyX
faddd83db8 eval: Fix SEGV in test49 2017-03-29 10:08:45 +03:00
ZyX
cdb1aa3e47 eval: Fix len argument to xstrlcat 2017-03-29 10:08:45 +03:00
ZyX
6aa6e50075 eval: Fix linter errors 2017-03-29 10:08:45 +03:00
ZyX
506b938947 *: Make some more things const and with length 2017-03-29 10:08:44 +03:00
ZyX
a56f2d27e3 eval: Make dictionary watchers work with empty keys
Looks like dict_notifications_spec test used to depend on some state which
should not be preserved. Changed all `setup()` calls to `before_each()` and
added necessary state in addition to changes required to test empty keys.

Note: unit tests for tv_dict_watcher* are still needed.
2017-03-29 10:08:44 +03:00
ZyX
1e3e302dc2 eval: Move part of dictwatcher* functions to eval/typval 2017-03-29 10:08:44 +03:00
ZyX
e5edf07ec4 unittests: Add tests for tv_list_find*() functions
Additional modifications:

- More `const` qualifiers in tested functions.
- `tv_list_find_str()` second argument is more in-line with other
  `tv_list_find*()` functions.
2017-03-29 10:08:06 +03:00
ZyX
9898f36aa3 unittests: Test tv_list_copy
Also found some bugs:

1. var_item_copy() always fails to copy v:_null_list and v:_null_dict. Fixing
   this should mean fixing `deepcopy(v:_null_list)` which should’ve been, but
   was not listed in #4615. This also fixes `deepcopy(v:_null_dict)`.
2. var_item_copy() crashes when trying to copy NULL string with `conv != NULL`.
3. `conv` argument is ignored when copying list unless `deep` is true, but it
   was not reflected in documentation.
4. `tv_dict_item_alloc_len()` allocated more memory then needed.
5. typvalt2lua was not able to handle self-referencing containers.
2017-03-29 10:08:06 +03:00
ZyX
2ad4fba46d eval: Move copy_tv to eval/typval 2017-03-29 10:08:06 +03:00
ZyX
86fc4580b8 eval: Fix max_min functions
Found two bugs:

1. Multiple unneeded error messages, vim/vim#1039.
2. Unformatted error string, vim/vim#1040.
2017-03-29 10:08:06 +03:00
ZyX
c4fe656fef typval.h: Allow non-var expressions in TV_DICT_ITER first argument 2017-03-29 10:08:06 +03:00
ZyX
31a3158d0b eval: Make sort always stable
Should fix test failures on QB:

    20:00:51,837 INFO  - not ok 420 - sort() sorts “wrong” values between -0.0001 and 0.0001, preserving order
    20:00:51,837 INFO  - # test/functional/eval/sort_spec.lua @ 21
    20:00:51,837 INFO  - # Failure message: test/functional/eval/sort_spec.lua:39: Expected objects to be the same.
    20:00:51,837 INFO  - # Passed in:
    20:00:51,837 INFO  - # (string) '[-1.0e-4, v:true, v:false, v:null, function('tr'), {'a': 42}, 'check', [], 1.0e-4]'
    20:00:51,837 INFO  - # Expected:
    20:00:51,837 INFO  - # (string) '[-1.0e-4, function('tr'), v:true, v:false, v:null, [], {'a': 42}, 'check', 1.0e-4]'
    20:00:51,837 INFO  - # stack traceback:
    20:00:51,837 INFO  - #     test/functional/eval/sort_spec.lua:39: in function <test/functional/eval/sort_spec.lua:22>
    20:00:51,837 INFO  - #
2017-03-29 10:08:06 +03:00
ZyX
5df35297f8 eval: Remove eval_expr() completely 2017-03-29 10:08:05 +03:00
ZyX
c8e63a8db8 eval: Move remaining get_tv_string* functions to eval/typval.c 2017-03-29 10:08:05 +03:00
ZyX
50ebd1dff5 eval: Move free_tv to eval/typval.h, remove most of its usages 2017-03-29 10:08:05 +03:00
ZyX
233b0c93bb eval: Move get_tv_number[_chk] to eval/typval.c 2017-03-29 10:08:05 +03:00
ZyX
1b3e13da5b eval: Refactor get_tv_lnum_buf 2017-03-29 10:08:05 +03:00
ZyX
7ee5cc7429 eval: Move get_tv_lnum and get_tv_float to eval/typval.h
Additionally

- Rename former tv_get_float to tv_get_float_chk due to name conflict (former
  get_tv_float is better suited for being tv_get_float).
- Add E907 error to get_tv_float() and test that it is being raised when
  appropriate.
2017-03-29 10:08:05 +03:00
ZyX
949f09bdbb eval: Move get_tv_string_buf() to eval/typval.c 2017-03-29 10:08:05 +03:00
ZyX
28dafe3ff0 eval,*: Move get_tv_string to typval.c
Function was renamed and changed to return `const char *`.
2017-03-29 10:08:05 +03:00
ZyX
5cdf7177ec eval: Move get_float_arg to typval.h
Assuming `inline` is there for a reason, so it is kept and function was moved to
typval.h and not to typval.c which does not have problems with #including
message.h.
2017-03-29 10:07:43 +03:00
ZyX
2dcfc439b2 eval: Split and move dict_add_nr_str to typval.c
Function was split into tv_dict_add_nr() and tv_dict_add_str().
2017-03-29 10:07:43 +03:00
ZyX
210342d795 eval: Move dict_add_list and dict_add_dict to typval.c 2017-03-29 10:07:43 +03:00
ZyX
983a5532ca eval: Move dict_set_keys_readonly to typval.c 2017-03-29 10:07:43 +03:00
ZyX
ecff8387f4 eval: Move get_dict_callback to typval.c 2017-03-29 10:07:43 +03:00
ZyX
54bd2e8b73 eval: Make setmatches() return -1 in case of some failures 2017-03-29 10:07:43 +03:00
ZyX
e18a578308 *: Move some dictionary functions to typval.h and use char*
Also fixes buffer reusage in setmatches() and complete().
2017-03-29 10:07:42 +03:00
ZyX
fb146e80aa eval: Split eval.c into smaller files 2017-03-29 10:05:06 +03:00
Justin M. Keyes
9d200cd0a3 getcompletion("cmdline") (#6376)
Closes #5823
2017-03-27 21:04:52 +02:00
ZyX
a24e94215e eval,functests: Fix linter errors 2017-03-27 00:18:55 +03:00
ZyX
73d37f8b6e executor: Add :lua debug.debug mock 2017-03-27 00:18:52 +03:00
ZyX
5c1b9a0d2a api: Reserve more numbers for internal calls
Reasoning; currently INTERNAL_CALL is mostly used to determine whether it is 
needed to deal with NL-used-as-NUL problem. This code is useful for nvim_… API 
calls done from VimL, but not for API calls done from lua, yet lua needs to 
supply something as channel_id.
2017-03-27 00:11:28 +03:00
ZyX
ed3115bd26 executor: Make sure it works with API values 2017-03-27 00:11:25 +03:00