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
Drew Neil
170d8af397
doc: on_stdout, on_stderr, onexit ( #6761 )
2017-05-22 16:57:16 +02:00
Justin M. Keyes
db0159be26
doc: update *feature-list*, remove "gui_running"
...
Closes #6783
2017-05-22 07:02:51 +02:00
Marco Hinz
afa781f420
Server tests: endpoint parsing in serverstart()
2017-05-22 01:05:40 +02:00
Marco Hinz
f913ba6e06
Server tests: use helpers.command()
2017-05-22 01:05:40 +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
6255c4e053
build: FreeBSD: Disable -Wc11-extensions only for clang
...
From FreeBSD ports patch:
https://svnweb.freebsd.org/ports/head/editors/neovim/files/patch-CMakeLists.txt?revision=425833&view=markup
References #4363
2017-05-21 13:44:02 +02:00
Justin M. Keyes
9cc10c69f2
Merge #6775 from justinmk/doc
2017-05-21 13:38:59 +02:00
Justin M. Keyes
872465cf1d
doc
2017-05-21 00:01:52 +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
Justin M. Keyes
bde46fdece
Merge #6772 from ZyX-I/fix-pvs-errors
2017-05-20 17:07:35 +02:00
ZyX
7dc7d2f83f
lua: Add PVS comment to lua/*.c
2017-05-20 05:06:55 +03:00
ZyX
c585a72cdc
pvscheck: Provide arguments to patch_sources
in correct order
2017-05-20 05:06:16 +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
7f24736ebc
pvscheck: Handle invalid option error gracefully
2017-05-20 03:44:23 +03:00
ZyX
d72df05b93
pvscheck: Add --only-analyse mode
2017-05-20 03:35:50 +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
raichoo
3280765f2d
man.vim: check for -l flag #6766
2017-05-19 14:02:11 +02:00
Justin M. Keyes
060ce0e0bc
startup: init v:progpath before calling vim_getenv ( #6755 )
2017-05-17 03:23:34 +02:00
James McCoy
96ede7c567
Merge pull request #6759 from jamessan/flaky-timers
...
oldtests: Mark test_timer's Test_oneshot as flaky
2017-05-16 20:24:11 -04: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
James McCoy
6e4e70f51b
ci: Enable staged builds ( #6739 )
...
This should better allow distributing the load among PRs, while getting
critical feedback to the submitter sooner.
First stage runs the ASAN/UBSAN/TSAN since any failures in those are
gating issues.
Second stage runs the rest of the normal builds in parallel.
Remaining stages provide lower priority feedback. The lint build runs
fast locally, so it's better to run that locally than wait on CI. The
coverage build is pretty fickle, so it is only run once all other jobs
are green.
2017-05-14 06:46:30 +02:00
Justin M. Keyes
17531ed082
Merge #6480 from ZyX-I/colored-cmdline'/input-dict
2017-05-13 21:17:33 +02:00