Commit Graph

9854 Commits

Author SHA1 Message Date
ZyX
fb4754104b macros: Fix excessive check 2017-04-16 19:39:55 +03:00
ZyX
9e9ba14e0e edit: Fix strange code
Based on the flow it looks like ptr could not be NULL here: if ptr_arg is NULL 
ptr is compl_leader, if compl_leader is NULL function exits. This also applies 
to Vim as far as I see.
2017-04-16 19:38:16 +03:00
ZyX
4f0fc1f06a digraph: Fix errors due to has_mbyte and friends being fixed 2017-04-16 19:32:38 +03:00
ZyX
2901921a1b digraph: Ignore false positive
Reversed order is intentional, digraphs allow swapping characters.
2017-04-16 19:30:18 +03:00
ZyX
a096766ee3 diff: Silence -V519
Not exactly a false positive, but previous assignment is a part of the pattern 
“change global, run code which uses it, change global back”.
2017-04-16 19:27:17 +03:00
ZyX
33952a7661 *: Silence some false positives 2017-04-16 19:18:54 +03:00
Justin M. Keyes
77a4f8f235 Merge #6219 from jbradaric/vim-7.4.2170
vim-patch:7.4.{2170,2180,2240,2241,2242}
2017-04-16 16:49:14 +02:00
Nikolai Aleksandrovich Pavlov
d4c7f74ed1 Merge pull request #6493 from ZyX-I/pvs-script
[RFC] scripts: Create script which checks Neovim with PVS-studio
2017-04-16 03:03:38 +03:00
Justin M. Keyes
5c805f4566 Merge #6528 from ZyX-I/revise-malloc-attr
Revise places where FUNC_ATTR_MALLOC is present

Closes #6521
2017-04-15 22:12:31 +02:00
Jurica Bradaric
ec0fabd4d5 eval.c: Code style fixes 2017-04-15 18:48:06 +02:00
ZyX
d76a13bb65 os/shell: Remove FUNC_ATTR_MALLOC from shell_build_argv
Returns an array of allocated strings.
2017-04-15 19:39:53 +03:00
ZyX
ac47e64eca ops: Remove FUNC_ATTR_MALLOC from copy_register
Returned storage has a pointer to a newly allocated array.
2017-04-15 19:25:00 +03:00
ZyX
d191ba1db3 option: Remove FUNC_ATTR_MALLOC from get_winbuf_options
Same as tv_dict_alloc() and additionally it saves some strings inside 
a dictionary.
2017-04-15 19:23:00 +03:00
ZyX
82ba2891ae eval/typval: Remove FUNC_ATTR_MALLOC from tv_list_alloc_ret
Same as tv_list_alloc, but additionally ret_tv receives pointer to the newly 
allocated list.
2017-04-15 19:19:22 +03:00
ZyX
af3579d5f7 eval/typval: Remove FUNC_ATTR_MALLOC from tv_dict_alloc
Allocated dict points to previously allocated dict.
Queue in allocated dict points to itself.
Hashtab in allocated dict points to inside itself.
Allocated dict is saved to gc_first_dict.
2017-04-15 19:18:25 +03:00
ZyX
b9004d7448 eval/typval: Remove FUNC_ATTR_MALLOC from tv_dict_item_copy
Allocated storage may receive pointer to the list after tv_copy().
2017-04-15 19:16:40 +03:00
ZyX
b08b71c728 eval/typval: Remove FUNC_ATTR_MALLOC from tv_list_alloc
Allocated list points to previously allocated list.
Allocated list is saved to gc_first_list.
2017-04-15 19:16:00 +03:00
ZyX
0dddd8a27c os/fileio: Remove FUNC_ATTR_MALLOC for file_open_new
fp contains pointer to rbuffer
2017-04-15 19:13:43 +03:00
Björn Linse
c70ab1a2e2 test: make locale dependent oldtest more reliable (#6526) 2017-04-15 15:06:50 +02:00
James McCoy
a8f7872f44 test_timers.vim: Adjust timing to handle difference in implementation 2017-04-15 08:50:43 -04:00
Björn Linse
12fc1defd6 ops: fix i<c-r> with multi-byte text (#6524) 2017-04-15 11:19:40 +02:00
ZyX
c289986c89 eval/encode: Do translate “… argument” strings, but only in conv_error 2017-04-15 00:08:50 +03:00
ZyX
31fd6d4bbf eval/typval: Do not translate tv_clear argument, this is useless 2017-04-15 00:00:22 +03:00
ZyX
b54e5c220f unittests: Add a test for TV_CSTRING
Not using enum{} because SIZE_MAX exceeds integer and I do not really like how
enum definition is described in C99:

1. Even though all values must fit into the chosen type (6.7.2.2, p 4) the type
   to choose is still implementation-defined.
2. 6.4.4.3 explicitly states that “an identifier declared as an enumeration
   constant has type `int`”. So it looks like “no matter what type was chosen
   for enumeration, constants will be integers”. Yet the following simple
   program:

        #include <stdint.h>
        #include <stdio.h>
        #include <stddef.h>

        enum { X=SIZE_MAX };

        int main(int argc, char **argv)
        {
          printf("x:%zu m:%zu t:%zu v:%zu",
                 sizeof(X), sizeof(SIZE_MAX), sizeof(size_t), (size_t)X);
        }

    yields one of the following using different compilers:

    - clang/gcc/pathcc: `x:8 m:8 t:8 v:18446744073709551615`
    - pcc/tcc: `x:4 m:8 t:8 v:1844674407370955161`

    If I remove the cast of X to size_t then pcc/tcc both yield `x:4 m:8 t:8
    v:4294967295`, other compilers’ output does not change.

    All compilers were called with `$compiler -std=c99 -xc -` (feeding program
    from echo), except for `tcc` which has missing `-std=c99`. `pcc` seems to
    ignore the argument though: it is perfectly fine with `-std=c1000`.
2017-04-14 23:58:47 +03:00
ZyX
276ee1f7fb eval: Add comment regarding why special values are needed 2017-04-14 23:58:46 +03:00
ZyX
b2942d1e72 eval: Change the point at which arg_errmsg and its length are changed
Ref #6437
2017-04-14 23:58:46 +03:00
Justin M. Keyes
58d2ce9bdb test: check_cores(): Escape $TMPDIR path. (#6520)
Lua string:match() considers hyphen to be a special char, we want the
path to be a literal match. Also remove "./", etc.

References #6483
2017-04-14 20:34:54 +02:00
Justin M. Keyes
45b5ebea9d perf: tv_clear(): Cache gettext() result. (#6519)
Closes #6437
2017-04-14 17:41:59 +02:00
Justin M. Keyes
dd391bfca1 Merge #6497 from justinmk/win-quot
win: system('...'): special-case cmd.exe
2017-04-12 03:21:21 +02:00
Justin M. Keyes
7c4e5dfd27 win: os_shell_is_cmdexe() + tests 2017-04-12 02:28:43 +02:00
Rui Abreu Ferreira
d31d177a0c win: default shellxescape, shellxquote to empty
Calling cmd.exe in Windows follows a very different pattern from Vim.
The primary difference is that Vim does a nested call to cmd.exe, e.g.
the following call in Vim

    system('echo a 2>&1')

spawns the following processes

    "C:\Program Files (x86)\Vim\vim80\vimrun" -s C:\Windows\system32\cmd.exe /c (echo a 2^>^&1
        ^>C:\Users\dummy\AppData\Local\Temp\VIoC169.tmp 2^>^&1)
    C:\Windows\system32\cmd.exe /c C:\Windows\system32\cmd.exe /c (echo a 2^>^&1
        ^>C:\Users\dummy\AppData\Local\Temp\VIo3C6C.tmp 2^>^&1)
    C:\Windows\system32\cmd.exe  /c (echo a 2>&1
        >C:\Users\dummy\AppData\Local\Temp\VIo3C6C.tmp 2>&1)

The escaping with ^ is needed because cmd.exe calls itself and needs to
preserve the special metacharacters for the last call. However in nvim
no nested call is made, system('') spawns a single cmd.exe process.
Setting shellxescape to "" disables escaping with ^.

The previous default for shellxquote=( wrapped any command in
parenthesis, in Vim this is more meaningful due to the use of tempfiles
to store the output and redirection (also see &shellquote). There is
a slight benefit in having the default be empty because some expressions
that run in console will not run within parens e.g. due to unbalanced
double quotes

    system('echo "a b')
2017-04-12 02:10:34 +02:00
Rui Abreu Ferreira
f3cc843755 win: libuv_process_spawn(): special-case cmd.exe
Disable CommandLineToArgvW-standard quoting for cmd.exe.

libuv assumes spawned processes follow the convention expected by
CommandLineToArgvW(). But cmd.exe is non-conformant, so for cmd.exe:
- With system([]), the caller has full control (and responsibility) to
  quote arguments correctly.
- With system(''), shell* options are used.

libuv quoting is disabled if argv[0] is:
- cmd.exe
- cmd
- $COMSPEC resolving to a path with filename cmd.exe

Closes #6329
References #6387
2017-04-12 02:10:34 +02:00
Rui Abreu Ferreira
799443c994 win/test: Enable more system() tests 2017-04-12 02:10:33 +02:00
Justin M. Keyes
f7611d74e7 win: vim_strsave_shellescape: Handle 'shellslash'.
From Vim, misc2.c:vim_strsave_shellescape
2017-04-12 02:10:33 +02:00
Justin M. Keyes
d6e5f94ae9 win: defaults: 'shellredir', 'shellxquote', 'shellxescape' 2017-04-12 01:35:49 +02:00
ZyX
1d7fde39a6 api/buffer: Validate replacement array in a separate cycle
Should not really change anything, but code should be more efficient by using 
more optimized libc functions (memchrsub is not libc, but it uses memchr) in 
place of a cycle.
2017-04-12 00:31:01 +03:00
ZyX
1bd39fb8d0 api: Remove FUNC_API_SINCE for nvim__ functions 2017-04-11 23:59:05 +03:00
Björn Linse
7d0fc179e6 genmsgpack: Do not export functions with __ 2017-04-11 23:56:18 +03:00
Felipe Oliveira Carvalho
2d72d85b23 refactor: pos_T macros to functions (#6496) 2017-04-11 22:44:48 +02:00
Björn Linse
1b94852ccb Merge pull request #6495 from bfredl/localefix
run Turkish locale tests on travis and make the tests more reliable
2017-04-11 12:38:58 +02:00
Björn Linse
69775f603f ci: install Turkish locale and make locale tests more reliable 2017-04-11 10:24:19 +02:00
ZyX
78082e8d3e functests: Check whether it is a problem with an array 2017-04-11 11:05:19 +03:00
ZyX
a8ade2441d lua/converter: Remove useless macros 2017-04-11 11:05:19 +03:00
ZyX
9bf15ca3fa lua: Fix header guards 2017-04-11 10:18:53 +03:00
Justin M. Keyes
337299c808 Merge #6490 from justinmk/test
Closes #6487
2017-04-11 03:14:10 +02:00
Justin M. Keyes
de378477cc ci/appveyor: fix cache pattern 2017-04-11 02:37:39 +02:00
Justin M. Keyes
119f0ca854 test: helpers.execute() => helpers.feed_command() 2017-04-11 02:37:39 +02:00
Justin M. Keyes
dab3f86d09 win/test: Enable recover_spec.lua 2017-04-11 02:37:39 +02:00
ZyX
acd9ed8d83 functests: Add another check for the similar transformation
Reasoning is majorly the same: check whether lua has bug or API function has 
bug, but on the other side: previous commit is checking whether similar bug when 
using API via msgpack RPC, this commit is checking whether another API function 
used via lua bindings triggers the same bug. Should additionally give a hint 
about which lua code contains a bug.
2017-04-11 02:32:13 +03:00
ZyX
add76592d9 functests: Test for “string cannot contain newline” set_lines error
Should make me able to determine whether they are lua bindings that contain 
a bug or set_lines.
2017-04-11 02:24:37 +03:00