Commit Graph

6125 Commits

Author SHA1 Message Date
Jonathan de Boyne Pollard
0de7b17d03 tui: Reset the scroll region when resizing.
DECSLPP is explicitly documented as not affecting the scroll region. The
dtterm extension is not as well documented, but it is safer than not to
assume that it operates similarly.

This also eliminates a pointlessly repeated test from tui_scroll(). It
additionally uses a non-parameterized DECSTBM sequence when attempting
to reset back to whole-screen scrolling.
2017-05-23 15:35:47 +02:00
Jonathan de Boyne Pollard
593af64943 tui: resize: use an extended terminal capability
... rather than hardwiring the string and testing the terminal
type every time the screen is re-sized.
2017-05-23 15:35:16 +02:00
Jonathan de Boyne Pollard
36d1fd0602 tui: Only use dtterm's extension where supported.
This limits the use of dtterm's extension to DECSLPP to only those
terminal types where it is known to be supported.
Because it can be potentially understood as genuine DECSLPP
sequence, setting the number of lines to a number larger than 25,
which of course can cause confusion (especially if it is the width
parameter that results in this) only use it on terminals that are
known to support the dtterm extension.

rxvt (Unicode) also understands dtterm's extension.
2017-05-23 15:24:34 +02:00
Justin M. Keyes
41fd278317 oldtests: Mark Test_lambda_with_timer as flaky 2017-05-23 00:44:21 +02:00
Marco Hinz
fd5e4e2e4c Server: don't fall back to Unix sockets 2017-05-22 23:38:09 +02:00
ZyX
a5a5c83608 api/vim: Fix nvim_list_runtimepaths
It used to

1. Always omit last component in runtimepath.
2. Always omit trailing empty item and leave uninitialized memory in place of 
   it.
2017-05-23 00:16:23 +03:00
Justin M. Keyes
7b55d50bbd tui.c: Initialize TUI input component only once. (#6784)
term_input_start should be called only once. This fixes a leak
introduced by af2e629be4.

Closes #6780

Steps to demonstrate memory leak:

    CC=clang CFLAGS=" -O0 -g -DEXITFREE " cmake .. -DMIN_LOG_LEVEL=0 -DCMAKE_BUILD_TYPE=Debug -DBUSTED_OUTPUT_TYPE=nvim -DCMAKE_INSTALL_PREFIX=$PWD/root -DCLANG_ASAN_UBSAN=ON -DPREFER_LUAJIT=false
    nvim -u NONE -i NONE --cmd $'function S()\nsuspend\nendfunction' --cmd 'inoremap <expr> X S()' --cmd 'call feedkeys("iX", "t")'
    fg<CR><Esc>:cq<CR>

```
=================================================================
==25050==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 4159 byte(s) in 1 object(s) allocated from:
    #0 0x4f6a30 in calloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:72
    #1 0xf8d222 in xcalloc /home/zyx/a.a/Proj/c/neovim/src/nvim/memory.c:147:15
    #2 0x1349d28 in rbuffer_new /home/zyx/a.a/Proj/c/neovim/src/nvim/rbuffer.c:24:17
    #3 0xa6867b in rstream_init /home/zyx/a.a/Proj/c/neovim/src/nvim/event/rstream.c:42:20
    #4 0xa68651 in rstream_init_fd /home/zyx/a.a/Proj/c/neovim/src/nvim/event/rstream.c:28:3
    #5 0x1866451 in term_input_init /home/zyx/a.a/Proj/c/neovim/src/nvim/tui/input.c:55:3
    #6 0x187f049 in tui_terminal_start /home/zyx/a.a/Proj/c/neovim/src/nvim/tui/tui.c:223:3
    #7 0x187b491 in tui_main /home/zyx/a.a/Proj/c/neovim/src/nvim/tui/tui.c:258:3
    #8 0x18b3171 in ui_thread_run /home/zyx/a.a/Proj/c/neovim/src/nvim/ui_bridge.c:124:3
    #9 0x7f54c2d5f39b  (/lib64/libpthread.so.0+0x739b)

Direct leak of 4159 byte(s) in 1 object(s) allocated from:
    #0 0x4f6a30 in calloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:72
    #1 0xf8d222 in xcalloc /home/zyx/a.a/Proj/c/neovim/src/nvim/memory.c:147:15
    #2 0x1349d28 in rbuffer_new /home/zyx/a.a/Proj/c/neovim/src/nvim/rbuffer.c:24:17
    #3 0x1865a4a in term_input_init /home/zyx/a.a/Proj/c/neovim/src/nvim/tui/input.c:29:23
    #4 0x187f049 in tui_terminal_start /home/zyx/a.a/Proj/c/neovim/src/nvim/tui/tui.c:223:3
    #5 0x187b491 in tui_main /home/zyx/a.a/Proj/c/neovim/src/nvim/tui/tui.c:258:3
    #6 0x18b3171 in ui_thread_run /home/zyx/a.a/Proj/c/neovim/src/nvim/ui_bridge.c:124:3
    #7 0x7f54c2d5f39b  (/lib64/libpthread.so.0+0x739b)

Indirect leak of 7144 byte(s) in 62 object(s) allocated from:
    #0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
    #1 0x7f54c231636c  (/usr/lib64/libtermkey.so.1+0x636c)

Indirect leak of 1500 byte(s) in 75 object(s) allocated from:
    #0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
    #1 0x7f54c2316b34  (/usr/lib64/libtermkey.so.1+0x6b34)

Indirect leak of 704 byte(s) in 1 object(s) allocated from:
    #0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
    #1 0x7f54c23129dd in _init (/usr/lib64/libtermkey.so.1+0x29dd)

Indirect leak of 520 byte(s) in 1 object(s) allocated from:
    #0 0x4f6c40 in realloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:77
    #1 0x7f54c2313b7c in termkey_register_keyname (/usr/lib64/libtermkey.so.1+0x3b7c)

Indirect leak of 256 byte(s) in 1 object(s) allocated from:
    #0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
    #1 0x7f54c2313c3c  (/usr/lib64/libtermkey.so.1+0x3c3c)

Indirect leak of 48 byte(s) in 2 object(s) allocated from:
    #0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
    #1 0x7f54c2313d9e  (/usr/lib64/libtermkey.so.1+0x3d9e)

Indirect leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
    #1 0x7f54c2316553  (/usr/lib64/libtermkey.so.1+0x6553)

Indirect leak of 24 byte(s) in 1 object(s) allocated from:
    #0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
    #1 0x7f54c2315a2f  (/usr/lib64/libtermkey.so.1+0x5a2f)

Indirect leak of 8 byte(s) in 1 object(s) allocated from:
    #0 0x485ca8 in __interceptor_strdup /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_interceptors.cc:562
    #1 0x7f54c2316bef  (/usr/lib64/libtermkey.so.1+0x6bef)

Indirect leak of 8 byte(s) in 1 object(s) allocated from:
    #0 0x485ca8 in __interceptor_strdup /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_interceptors.cc:562
    #1 0x7f54c2316c0f  (/usr/lib64/libtermkey.so.1+0x6c0f)

Indirect leak of 4 byte(s) in 1 object(s) allocated from:
    #0 0x4f6840 in malloc /var/tmp/portage/sys-devel/llvm-3.9.1-r1/work/llvm-3.9.1.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:64
    #1 0x7f54c2316a26  (/usr/lib64/libtermkey.so.1+0x6a26)

SUMMARY: AddressSanitizer: 18574 byte(s) leaked in 149 allocation(s).
```
2017-05-22 17:26:26 +02:00
Marco Hinz
3efc82cbb2 Server: use uv_getaddrinfo() for $NVIM_LISTEN_ADDRESS
This change implicitly adds IPv6 support.

If the address contains ":", we try to use a TCP socket instead of a Unix domain
socket. Everything in front of the last occurrence of ":" is the hostname and
everything after it the port.

If the hostname lookup fails, we fall back to using a Unix domain socket.

If the port is empty ("localhost:"), a random port will be assigned.

Examples:

  NVIM_LISTEN_ADDRESS=localhost:12345 -> TCP (IPv4 or IPv6), port: 12345
  NVIM_LISTEN_ADDRESS=localhost:      -> TCP (IPv4 or IPv6), port: random (> 1024)
  NVIM_LISTEN_ADDRESS=localhost:0     -> TCP (IPv4 or IPv6), port: random (> 1024)
  NVIM_LISTEN_ADDRESS=localhost       -> Unix domain socket "localhost" in current dir
2017-05-22 01:05:39 +02:00
Justin M. Keyes
17a46dc5e0 pty_process_unix.c: include <libutil.h> on DragonFly BSD
From FreeBSD ports patch:
https://svnweb.freebsd.org/ports/head/editors/neovim/files/patch-src_nvim_os_pty__process__unix.c?revision=425833&view=markup

References https://github.com/neovim/neovim/issues/6771#issuecomment-302921368
2017-05-21 13:47:39 +02:00
Justin M. Keyes
bdd73fc07f api/nvim_replace_termcodes: Document keycodes behavior 2017-05-20 22:20:32 +02:00
Justin M. Keyes
bfb9cf1fc3 vim_getenv: Remove redundant NULL check. 2017-05-20 19:40:38 +02:00
James McCoy
6a7514feaa Merge pull request #6735 from justinmk/funcattr
clang 3.6+ REAL_FATTR_NONNULL_RET
2017-05-20 12:37:18 -04:00
ZyX
7dc7d2f83f lua: Add PVS comment to lua/*.c 2017-05-20 05:06:55 +03:00
ZyX
e14f678689 options: Silence V542 without using comments 2017-05-20 05:02:03 +03:00
ZyX
a052040430 options: Silence V542 the other way
Still does not work though.
2017-05-20 04:56:38 +03:00
ZyX
1dafe1e002 syntax: Silence V782
Just another pointer hack used with hash tables.
2017-05-20 04:47:01 +03:00
ZyX
a494bf847d tui: Fix V547: always true condition
The variable in question is initalized at the start of the function with
something non-NULL, specifically pointer to a static buffer.
2017-05-20 04:47:01 +03:00
ZyX
d9398982ea spellfile: Fix V547: always true condition
This condition was already checked at the surrounding if() at line 2422.
2017-05-20 04:47:01 +03:00
ZyX
c7c4aad387 tag: Silence V522: potential null dereference
Call PVS is referring to is using DT_FREE which will make function exit earlier,
in #ifdef EXITFREE block.
2017-05-20 04:47:01 +03:00
ZyX
b2265a0977 shada: Fix V581: adjacent branches with same condition 2017-05-20 04:29:54 +03:00
ZyX
8bd903cd51 search: Fix V502: ?: ambiguity 2017-05-20 04:28:21 +03:00
ZyX
5bea4906a2 options: Silence V542: odd casts for .def_val 2017-05-20 04:26:24 +03:00
ZyX
7d895ee053 memfile: Fix V547: always true condition
`blocksize` was checked against UINT_MAX after it was checked against 
MAX_SWAP_PAGE_SIZE which makes it always pass the check. Better use 
STATIC_ASSERT instead.
2017-05-20 04:21:00 +03:00
ZyX
40444e9186 main: Silence V522: potential NULL pointer dereference
AFAIK there is no way NULL can be there, including from the line it points to.
Dunno what analyser was thinking, but dereferencing of `argv[0]` happened just
before `get_number_arg()` call: in `ascii_isdigit()` two lines above. And `idx`
cannot possibly be NULL ever, it comes from `&varname`, this could not ever give
anything, but a valid pointer.
2017-05-20 04:21:00 +03:00
ZyX
9ec2bf26ce getchar: Eliminate two-iteration loop 2017-05-20 04:21:00 +03:00
ZyX
37a77506b0 eval: Silence V614: potentially uninitialized variable
Could not be uninitialized because `func_or_func_caller_profiling` is true only 
if `do_profiling` is `YES`, and if `do_profiling` is `YES` then 
`script_prof_save()` was called to initialize the variable.
2017-05-20 03:54:07 +03:00
ZyX
d9239181af eval: Fix V507 2017-05-20 03:51:19 +03:00
ZyX
98baea63ff eval: Silence V782 2017-05-20 03:49:36 +03:00
ZyX
1db29cb5e5 eval/encode: Silence V595 error 2017-05-20 03:47:01 +03:00
ZyX
a914029278 buffer: Silence V519 2017-05-20 03:28:44 +03:00
ZyX
956ef785f5 edit: Silence V595 2017-05-20 03:28:27 +03:00
ZyX
df67785886 *: Fix all V641 errors 2017-05-20 03:25:22 +03:00
ZyX
2411b6f137 charset: Fix V695: dead branches
Based on comments it appears that some non-printable characters intended to be 
shown as `|x` (0xA0..0xFE) and some as `~x` (0x80..0x9F, 0xFF, excluding 
previous). But this never happens because this is being catched by condition `c 
>= 0x80` above which makes them be represented as `<A0>`. Since I find this 
variant more useful and it additionally is backwards compatible (Vim does the 
same thing) I just dropped dead branches.
2017-05-20 03:21:18 +03:00
Justin M. Keyes
060ce0e0bc startup: init v:progpath before calling vim_getenv (#6755) 2017-05-17 03:23:34 +02:00
James McCoy
4a08320007 oldtests: Mark test_timer's Test_oneshot as flaky 2017-05-16 15:32:19 -04:00
Justin M. Keyes
597d65b4b7 Merge #6741 from justinmk/progpath 2017-05-15 16:11:01 +02:00
Justin M. Keyes
cc5a42a774 env_iter: Learn delim parameter. 2017-05-15 15:01:52 +02:00
Justin M. Keyes
5bda5c5bf2 vim_getenv: Use v:progpath instead of os_exepath. 2017-05-15 15:01:52 +02:00
Justin M. Keyes
4c5398bc40 startup: v:progpath fallback: path_guess_exepath
If procfs is missing then libuv cannot find the exe path.
Fallback to path_guess_exepath(), adapted from Vim findYourself().

Closes #6734
2017-05-15 15:01:52 +02:00
Justin M. Keyes
8e052f677e Merge #6737 "options: make 'highlight' read-only" 2017-05-15 14:53:31 +02:00
Björn Linse
8d8b6224d9 options: make 'highlight' read-only 2017-05-15 07:22:31 +02:00
Justin M. Keyes
17531ed082 Merge #6480 from ZyX-I/colored-cmdline'/input-dict 2017-05-13 21:17:33 +02:00
Florian Walch
7383274f66 cmake: Support building without LuaJIT. #6736
Compile `nvim` executable against Lua if PREFER_LUA=ON.

As the testing library `nvim-test` requires LuaJIT, it is
still compiled against LuaJIT. If LuaJIT is not available,
`nvim-test` is not built.
2017-05-13 16:59:06 +02:00
ZyX
d66ef56739 eval/typval: Fix numbuf parameter documentation 2017-05-13 17:01:22 +03:00
Björn Linse
244a1f97db Merge pull request #6704 from bfredl/luaexec
execute lua directly from the remote API
2017-05-13 15:06:41 +02:00
Justin M. Keyes
c77c54f1bc func_attr.h: use NVIM_HAS_ATTRIBUTE 2017-05-13 15:04:32 +02:00
Justin M. Keyes
8d98780932 func_attr.h: clang 3.7+: REAL_FATTR_NONNULL_RET
Closes #1627
2017-05-13 15:04:32 +02:00
Justin M. Keyes
9e5d55e2b0 path.c: Remove invalid FUNC_ATTR_NONNULL_RET
References https://github.com/neovim/neovim/pull/6514#issuecomment-301235265
2017-05-13 15:04:32 +02:00
Björn Linse
f424189093 api: execute lua directly from the remote api 2017-05-13 15:03:42 +02:00
oni-link
5886eaed7d if_cscope: Fix truncation of formated output
snprintf() has to truncate the string written to buffer buf for maximal
size_t value.

Increase buffer size to fix this.
2017-05-13 14:30:56 +02:00