Commit Graph

1111 Commits

Author SHA1 Message Date
James McCoy
674db4b01f eval: Remove dictwatcher from watchers queue before freeing it
This fixes a use-after-free noticed by ASAN which would occur when a
dictwatcher was still active on a dictionary when the dictionary was
freed.

    fun! MakeWatch()
      let d = {'foo': 'bar'}
      call dictwatcheradd(d, 'foo', function('...'))
    endfun

Patch-by: oni-link
Closes #5930
2017-01-12 14:47:43 -05:00
Rui Abreu Ferreira
1e079fa987 system([...]): Set v:shell_error=-1 if not executable.
Do _not_ set v:shell_error on parameter validation error.

system([...]) does not invoke a shell, so this change is somewhat
questionable. But `:help v:shell_error` is sufficiently vague to allow
-1 in this case.
2017-01-11 01:05:55 +01:00
James McCoy
9b47115d53 vim-patch:7.4.2009
Problem:    Messages test fails.
Solution:   Don't set redir_execute before returning.

ed59aa60d3
2017-01-10 07:14:24 -05:00
James McCoy
6520517e22 vim-patch:7.4.2008
Problem:    evalcmd() has a confusing name.
Solution:   Rename to execute().  Make silent optional.  Support a list of
            commands.

79815f1ec7
2017-01-10 07:14:12 -05:00
ZyX
35416e89bc memory: Restore entered_free_all_mem functionality 2017-01-07 17:52:53 +03:00
ZyX
9a09ffa883 eval: Fix failing test 2017-01-07 15:54:55 +03:00
ZyX
728367a196 unittest: Add dict_items function 2017-01-07 15:54:55 +03:00
ZyX
a970c1a957 eval: Make sure that copyID is reset when needed
Works by making value pushed on stack represent the exhausted list.

Fixes #5901, except for dictionaries which need similar adjustment.
2017-01-07 15:15:14 +03:00
James McCoy
b4c0c61f5c Merge pull request #5826 from ZyX-I/fix-typval_encode
Refactor eval/typval_encode.h
2017-01-06 21:11:33 -05:00
ZyX
dd48d7b94b eval: Fix typo 2017-01-07 00:17:31 +03:00
ZyX
10c6e68db6 eval: Work with reference cycles in partials (self) properly 2017-01-06 22:57:34 +03:00
ZyX
6584fb723a eval/typval_encode: Use TYPVAL_ENCODE_CONV_EMPTY_DICT for partials 2017-01-06 22:48:50 +03:00
Michael Schupikov
1fee9a7151 eval.c: filter_map(): avoid maybe-uninitialized warning (#5897)
maybe-uninitialized warning observed with -Ofast.
2017-01-06 18:23:52 +01:00
ZyX
c93ce07628 *: Remove // fname() comments near typval_encode includes 2017-01-04 19:04:15 +03:00
Justin M. Keyes
6f9be2464c Merge #5872 justinmk/test_autochdir 2017-01-04 08:24:36 +01:00
Justin M. Keyes
e43f7425ee refactor: Remove VimL function test()
vim-patch:7.4.1838
2017-01-04 07:23:13 +01:00
Justin M. Keyes
097c8dccca refactor: Remove VimL function test_autochdir()
- Eliminate global test_autochdir.
- Eliminate VimL function test_autochdir()
- Use a lua test instead. Fails correctly after reverting
  0c43479979 / vim-patch:7.4.2015.
2017-01-04 07:23:13 +01:00
lonerover
c56411ed87 vim-patch:7.4.2043 (#5871)
Problem:    setbuvfar() causes a screen redraw.
Solution:   Only use aucmd_prepbuf() for options.

93431df9eb
2017-01-04 06:16:21 +01:00
lonerover
17dc20369e fix lint error 2017-01-03 10:42:44 -05:00
lonerover
1bea73a21e vim-patch:7.4.1847
Problem:    Getting an item from a NULL dict crashes.  Setting a register to a
            NULL list crashes. (Nikolai Pavlov, issue vim/vim#768)  Comparing a NULL
            dict with a NULL dict fails.
Solution:   Properly check for NULL.

13ddc5c359
2017-01-03 10:38:56 -05:00
ZyX
efc624c2fe eval: Fix errorneous early exit when converting lists and dictionaries 2017-01-03 17:28:57 +03:00
ZyX
a5bdd64a5e eval: Fix unused variable error in release builds 2017-01-03 07:14:54 +03:00
ZyX
ff8944105d eval/typval_encode: Refactor arguments to argument macroses
Fixed local test failures somewhere in process.
2017-01-03 06:39:23 +03:00
ZyX
5ba24318e2 eval: Do not free partial contents if partial is still referenced
Should fix some tests, including core/job_partial tests.
2017-01-03 06:39:23 +03:00
ZyX
e2d81cc479 eval: Do not free partial lists as lists 2017-01-03 06:39:23 +03:00
ZyX
901e7805ee eval: Fix case when cur_mpsv is NULL
Should only happen when clearing VAR_FUNC typval which is not placed inside 
a container.
2017-01-03 06:39:23 +03:00
ZyX
759e736b0a eval/typval_encode: Fix infinite loop
Occurs when trying to dump a partial with attached self dictionary which
references that partial. “Infinite” loop should normally result in Neovim killed
by OOM killer.

Also moved the place when partials are unreferenced by clear_tv: from
…FUNC_START to …FUNC_END.
2017-01-03 06:39:23 +03:00
ZyX
b3163d06b3 eval/typval_encode: Refactor big-big macros into .c.h file
This makes gdb backtraces much more meaningful: specifically I now know at which 
line it crashes in place of seeing that it crashes at 
TYPVAL_ENCODE_DEFINE_CONV_FUNCTIONS macros invocation.
2017-01-03 06:39:23 +03:00
ZyX
c5c75513b8 eval/typval_encode: Make partial conversions not recursive
Is known to crash in the current state.

Ref #5825.
2017-01-03 06:39:23 +03:00
James McCoy
af2b5abcd6 lint 2017-01-02 07:18:18 -05:00
James McCoy
945540b782 vim-patch:7.4.1868
Problem:    Setting really_exiting causes memory leaks to be reported.
Solution:   Add the in_free_all_mem flag.

b89a25f17e
2017-01-01 23:20:31 -05:00
James McCoy
1feaa450cb vim-patch:7.4.1866
Problem:    Invalid memory access when exiting with EXITFREE defined.
            (Dominique Pelle)
Solution:   Set "really_exiting" and skip error messages.

a96732150c

This fails to build, due to a00c2e0ecb
removing really_exiting from globals.h, but the next commit fixes the
build failure.
2017-01-01 23:20:24 -05:00
Shougo Matsushita
6ba3b85382 vim-patch:6f1d9a
Updated runtime files.

6f1d9a096b
2017-01-02 10:45:10 +09:00
Shougo Matsushita
0c43479979 vim-patch:7.4.2015
Problem:    When a file gets a name when writing it 'acd' is not effective.
            (Dan Church)
Solution:   Invoke DO_AUTOCHDIR after writing the file. (Allen Haim, closes
            vim/vim#777, closes vim/vim#803)  Add test_autochdir() to enable 'acd' before
            "starting" is reset.

5c71994f4e
2017-01-02 10:43:45 +09:00
James McCoy
46235a30ed lint 2016-12-28 14:57:40 -05:00
James McCoy
de025d6dd0 vim-patch:7.4.2277
Problem:    Memory leak in getbufinfo() when there is a sign. (Dominique
            Pelle)
Solution:   Remove extra vim_strsave().

6a402edbeb
2016-12-28 14:57:39 -05:00
James McCoy
fe03ce23bf vim-patch:7.4.2273
Problem:    getwininfo() and getbufinfo() are inefficient.
Solution:   Do not make a copy of all window/buffer-local options.  Make it
            possible to get them with gettabwinvar() or getbufvar().

3056735ae8
2016-12-28 14:57:39 -05:00
James McCoy
03ed7e1eba vim-patch:7.4.2272
Problem:    getbufinfo(), getwininfo() and gettabinfo() are inefficient.
Solution:   Instead of making a copy of the variables dictionary, use a
            reference.

9f8187c335
2016-12-28 14:57:39 -05:00
James McCoy
c4c894b2fa vim-patch:7.4.2226
Problem:    The field names used by getbufinfo(), gettabinfo() and
            getwininfo() are not consistent.
Solution:   Use bufnr, winnr and tabnr. (Yegappan Lakshmanan)

3392883770
2016-12-28 14:57:39 -05:00
James McCoy
4453aa0d29 vim-patch:7.4.2215
Problem:    It's not easy to find out if a window is a quickfix or location
            list window.
Solution:   Add "loclist" and "quickfix" entries to the dict returnec by
            getwininfo(). (Yegappan Lakshmanan)

386600f0cb
2016-12-28 14:57:38 -05:00
James McCoy
0046641070 vim-patch:7.4.2204
Problem:    It is not easy to get information about buffers, windows and
            tabpages.
Solution:   Add getbufinfo(), getwininfo() and gettabinfo(). (Yegappan
            Lakshmanan)

b5ae48e9ff
2016-12-28 14:57:38 -05:00
James McCoy
3224ade9c3 lint 2016-12-27 14:10:28 -05:00
James McCoy
29d7a59711 vim-patch:7.4.1768
Problem:    Arguments of setqflist() are not checked properly.
Solution:   Add better checks, add a test. (Nikolai Pavlov, Hirohito Higashi,
            closes vim/vim#661)

d106e5ba7f
2016-12-27 14:10:01 -05:00
lonerover
a6b14dbb0b vim-patch:7.4.1816 (#5833)
Problem:    Looping over a null list throws an error.
Solution:   Skip over the for loop.

d8585eded6
2016-12-26 22:15:44 -05:00
Justin M. Keyes
43ba7f4d98 eval.c: set_selfdict(): Fix invalid memory access. 2016-12-14 20:52:18 +01:00
Michael Ennen
5e4eb18eb0 Add some tests and cleanup. 2016-12-12 10:17:35 -05:00
Björn Linse
0f681c80e1 Make partials work with jobs, timers, and dictwatchers. 2016-12-12 10:17:35 -05:00
Michael Ennen
a21c687661 Fixes. 2016-12-12 10:17:35 -05:00
Michael Ennen
6c5dd6827f vim-patch:7.4.1875
Problem:    Comparing functions and partials doesn't work well.
Solution:   Add tests. (Nikolai Pavlov)  Compare the dict and arguments in the
            partial.

8e759ba865
2016-12-12 10:17:35 -05:00
Michael Ennen
c52856af2c vim-patch:7.4.1842
Problem:    get() works for Partial but not for Funcref.
Solution:   Accept Funcref.  Also return the function itself. (Nikolai Pavlov)

03e19a04ac
2016-12-12 10:17:35 -05:00