Commit Graph

2234 Commits

Author SHA1 Message Date
Scott Prager
fd36dc208e job: Let vimL jobsend() accept a list.
Use save_tv_as_string(), same as vimL system(). This also makes
jobsend() more liberal in what it can accept. For example,
`jobsend(j, 123)` is now valid.

Closes #1176
2014-11-07 13:34:56 -03:00
Scott Prager
e90973e035 job: Make v:job_data[2] a list.
Factor out string_to_list() from f_system()'s implementation
and use that to set job_data. This has the technical advantage of
preserving NULs, and may be more convenient for users.

Required for #1176.
2014-11-07 13:34:56 -03:00
Scott Prager
37cbafa5bb job: Read job data line-wise.
Only read up to the last newline in push_job_event().
2014-11-07 13:34:56 -03:00
Scott Prager
50f1c5db25 rstream: Expose rstream_read_ptr and _available.
Needed for accessing this information without direct access to the
rstream_buffer.
2014-11-07 13:34:56 -03:00
Scott Prager
4df884a611 memory: implement xmemrchr() 2014-11-07 13:34:56 -03:00
John Szakmeister
07775c07c0 Merge pull request #1411 from xu-cheng/homebrew-formula
Let homebrew handle external resources download
2014-11-07 08:50:13 -05:00
Thiago de Arruda
6f8c916d84 Merge PR #1424 'Only force-close stdout/stderr when the job exits' 2014-11-07 09:30:44 -03:00
Xu Cheng
9065898264 build: don't download and extract tarball if source is already present
When building under Homebrew, we want to let Homebrew manage downloading and
extracting the tarballs.
2014-11-07 20:19:00 +08:00
Xu Cheng
871e353fa8 Homebrew: let Homebrew handle external resources download 2014-11-07 20:18:28 +08:00
Thiago de Arruda
d3f81424e5 job: Only force-close stdout/stderr when the job exits
stdout/stderr should only be closed after the job truly exits, or else we can
lose data sent by it.
2014-11-07 09:12:42 -03:00
John Szakmeister
5d97f3fc2c build: default to using -O2 for release builds
The -O3 optimization level can often lead to dangerous (and sometimes
incorrect) optimizations being performed.  So let's use a level that's
more stable.
2014-11-07 06:21:54 -05:00
John Szakmeister
f7a468c1e7 Merge pull request #1414 from xu-cheng/sha1_md5
Prefer to SHA1 other than MD5 in third-party downloads
2014-11-07 05:26:46 -05:00
Xu Cheng
77fc32b311 Prefer to SHA1 other than MD5 in third-party downloads
If CMake version is less than 2.8.11, fallback to MD5
2014-11-07 16:07:26 +08:00
Thiago de Arruda
7edd68e635 Merge PR #1422 'Pass --show-possibly-lost=no to valgrind' 2014-11-07 02:01:48 -03:00
Thiago de Arruda
88a49148b3 test: Pass --show-possibly-lost=no to valgrind in helpers.lua
This command-line flag will suppress all warnings about interior pointers,
which are used in hashtab.c.
2014-11-07 01:40:18 -03:00
Thiago de Arruda
7ded32ad3b Merge PR #1421 'Improve test error handling and reporting' 2014-11-07 01:03:25 -03:00
Thiago de Arruda
168a46fd31 test: Improve test environment setup and error handling/reporting
During test setup, we used to call a vimscript function(BeforeEachTest) that
attempted to restore Nvim to it's initial state as much as possible in order to
provide a clean environment for running new tests. This approach has proven to
be unreliable, as some tests leave state that can affect other tests, eventually
causing failures that are difficult to debug.

This commit changes the 'clear' function so it will restart Nvim every time it
is called, which is a slower, but more reliable solution that will simplify
spotting bugs in the future.

Some other improvements/fixes were also performed:

- Whenever an error is detected in a handler passed to "run()", the event loop
  will be stopped and the error will be propagated to the main thread.
- Errors and the "cleanup()" function will always send a quit command to the
  current Nvim instance. This should prevent memory starvation when running
  tests under valgrind(where each Nvim instance can consume a lot of memory).
- Fixed a wrong assertion in server_requests_spec.lua. Previously the failure
  was undetected in a notification handler.
- Fixed some tests to expect fully clean registers. The deleted cleanup function
  used to put an empty string in every register, but that resulted in a extra
  line being added.
2014-11-07 00:55:58 -03:00
Thiago de Arruda
3e78fc9faf deps: Upgrade to latest version of lua-client 2014-11-06 22:45:15 -03:00
Justin M. Keyes
8455fd5e33 Merge pull request #1340 from elmart/remove-long_u
Remove project-specific integer types: long_u. (2)
2014-11-06 17:09:39 -05:00
Eliseo Martínez
8386255803 Review: Remove long_u: memfile: Add to clint. 2014-11-06 22:53:43 +01:00
Eliseo Martínez
09d4133a64 Review: Remove long_u: memfile: Refactor: blocknr_T: long -> int64_t.
Replace long with int64_t.
Apart from being convenient, not using long is required by clint.
2014-11-06 22:53:43 +01:00
Eliseo Martínez
7d4ec612b1 Review: Remove long_u: memfile: Refactor: int -> bool.
Replace int with bool where appropriate.
2014-11-06 22:53:43 +01:00
Eliseo Martínez
96e7f229a5 Review: Remove long_u: memfile: Refactor: bhdr_T.bh_data: char_u* -> void*.
This, in addition to being more correct, allows removing a lot of
explicit casts.
2014-11-06 22:53:42 +01:00
Eliseo Martínez
844d64e9ff Review: Remove long_u: memfile: Refactor: mf_hashtab_T.mht_fixed: Remove.
Unused since 457bb26151.
2014-11-06 22:53:42 +01:00
Eliseo Martínez
200f8ee0e5 Review: Remove long_u: memfile: Refactor: long_u -> size_t.
- memfile_defs.h:
    * hashtab_T: mht_mask: long_u -> size_t.
        Masks are used to truncate keys to a value adequate for an index
        in the array of entries. Value of the mask plus one is the
        current size of the array. Both of those reasons imply the
        soundness of size_t for this type.
    * hashtab_T: mht_count: long_u -> size_t.

- memfile.c:
    * total_mem_used: long_u -> size_t.
    * mf_hash_free_all: idx: long_u -> size_t.
    * mf_hash_add_item: idx: long_u -> size_t.
    * mf_hash_find: idx: long_u -> size_t.
    * mf_hash_grow: i: long_u -> size_t.
    * mf_hash_grow: j: long_u -> size_t.
2014-11-06 22:53:42 +01:00
Eliseo Martínez
7ffed667d4 Review: Remove long_u: memfile: Enable -Wconversion.
- Add memfile.c to converted files list.
- Fix conversion issues:
    * bhdr_T          : bh_page_count : int  -> unsigned.
    * bhdr_T          : bh_flags      : char -> unsigned.
    * mf_new()        : page_count    : int  -> unsigned.
    * mf_get()        : page_count    : int  -> unsigned.
    * mf_release()    : page_count    : int  -> unsigned.
    * mf_alloc_bhdr() : page_count    : int  -> unsigned.
    * mf_trans_add()  : page_count    : int  -> unsigned.
    * mf_put()        : flags         : int  -> unsigned.
2014-11-06 22:53:42 +01:00
Eliseo Martínez
fce201e656 Review: Remove long_u: memfile: Cleanup: Fix naming inconsistencies.
- Drop '_S' suffix for struct names.
- Make struct names match corresponding type's name (just removing '_S' suffix).
- Rename NR_TRANS type/struct (just ugly).
2014-11-06 22:53:41 +01:00
Eliseo Martínez
a69b2e3c40 Review: Remove long_u: memfile: Cleanup: Others.
memfile_defs.h:
- Inline struct definitions in typedefs.
- Move memfile_T definition to this file (weirdly, was in buffer_defs.h).

memfile.c:
- Use C99 style variable declarations. This is, move variable declarations as
  near to first-usage point as possible).
- Modernize old-style function declarations.
- Fix indent at some places (some multiline expressions and the like).
2014-11-06 22:53:41 +01:00
Eliseo Martínez
8fb4097fc6 Review: Remove long_u: memfile: Cleanup: Comments.
- Restyle comments (/// when appropiate, // otherwise).
- Improve comments (add new comments, augment/clarify existing ones).
2014-11-06 22:53:40 +01:00
Eliseo Martínez
e7a863e12c Remove long_u: eval: Replace with size_t.
Note: No effort is done on refactoring anything in eval module, as it
      will be eventually dropped.
2014-11-06 22:19:33 +01:00
Jon Kinney
b384252d52 Fix the nvim-clipboard help instructions
Fixes #1407
2014-11-06 11:26:38 -06:00
Justin M. Keyes
7c7874d11b Merge pull request #1412 from fwalch/startup-help
version: Refer to nvim help on startup screen.
2014-11-06 09:45:30 -05:00
Florian Walch
724a53306f version: Refer to nvim help on startup screen. 2014-11-06 13:37:15 +01:00
Justin M. Keyes
37d608b8c1 Merge pull request #1370 from aktau/enable-iconv
re-enable iconv
2014-11-06 07:14:36 -05:00
Eliseo Martínez
74817b546e Fix warnings: edit.c: ins_bs(): Garbage result: MI.
Problem    : Result of operation is garbage or undefined @ 7460.
Diagnostic : Multithreading issue.
Rationale  : Problem occurs if any of globals `enc_utf8`, `p_deco is
             modified while function is executing.
Resolution : Use local copy of globals.
2014-11-06 09:51:59 +01:00
Eliseo Martínez
d0a0efaf32 Fix warnings: edit.c: replace_do_bs(): Garbage value: MI.
Problem    : Assigned value is garbage or undefined @ 6359.
Diagnostic : Multithreading issue.
Rationale  : Problem only occurs if global `State` changes while
             function is executing.
Resolution : Use local copy of global in function.
2014-11-06 09:51:58 +01:00
Eliseo Martínez
cefc26ab63 Fix warnings: edit.c: mb_replace_pop_ins(): Unitilialized arg: FP.
Problem    : Uninitialized argument value @ 6296.
Diagnostic : False positive.
Rationale  : Error occurs if n <= 1. That's not possible because
             n >= 1 due to `MB_BYTE2LEN` postcondition and n != 1
             because we are in the else branch.
Resolution : Assert n > 1.
2014-11-06 09:51:58 +01:00
Eliseo Martínez
da4c9447a4 Fix warnings: edit.c: ins_compl_get_exp(): Np dereference (2): FP.
Problems   : Dereference of null pointer @ 3615.
             Dereference of null pointer @ 3764.
Diagnostic : False positives.
Rationale  : `ins_buf` is local static, so maintains value between calls.
             This function will be called first when `compl_started` is
             false, and in that case it initializes `ins_buf`. After
             that, it can be called multiple times with `compl_started`
             true, where `ins_buf` will be updated but not to null.
             So, when arriving to both points, `ins_buf` should never be
             null.
Resolution : Assert `ins_buf` at both points.
2014-11-06 09:51:58 +01:00
Eliseo Martínez
0bda79a847 Fix warnings: edit.c: ins_compl_next_buf(): Np dereference: FP.
Problem    : Dereference of null pointer @ 3234.
Diagnostic : False positive.
Rationale  : `wp` is local static, so maintains value between calls.
             First time function is called for a given flag will have
             `buf == curbuf`, implying `wp` initialization.
Resolution : Assert variable always having been initialized.
2014-11-06 09:51:58 +01:00
Eliseo Martínez
997c0b3939 Fix warnings: regexp.c: match_with_backref(): Nonnull violation: FP.
Problem: Argument with 'nonnull' attribute passed null @ 5632.
         http://neovim.org/doc/reports/clang/report-041a0e.html#EndPath.

Diagnostic: False positive.
Rationale : `p = reg_getline(clnum)` above should not be null, because
            `clnum` starts at `start_lnum` and only increments after
            that.
Resolution: Assert p not null.
2014-11-06 09:51:45 +01:00
Eliseo Martínez
22475b5ae8 Fix warnings: regexp.c: br_regcomp(): Np dereference: MI.
Problem: Dereference of null pointer @ 1312.
         http://neovim.org/doc/reports/clang/report-b1d09a.html#EndPath

Diagnostic: Multithreading issue.
Rationale : Suggested error path contains two succesive calls to
            `regnext(scan)`, first of which returning nonnull, the
            second one returning null. This can only occur if global
            `reg_toolong` accesed in `regnext()` changes between the
            calls.
Resolution: Use local variable to cache first `regnext(scan)` result.
            Note that this change alters function semantics, as now
            function only issues one call instead of two, reusing the
            result for the second time.
            This shouldn't be a problem, though, as new semantics should
            be in fact be better.
2014-11-06 09:51:44 +01:00
Eliseo Martínez
336aab5eef Fix warnings: regexp.c: skip_regexp: Np dereference: FP.
Problem: Derefence of null pointer @ 1208.
         http://neovim.org/doc/reports/clang/report-24b5ca.html#Path10

Diagnostic: False positive.
Rationale : Error is reported to happen  if after `if (*newp == NULL) {`
            body, `*newp` continues being NULL, and false branch of
            following `if (*newp != NULL)` is taken. Now, `vim_strsave`
            cannot return NULL, so error cannot happen.
Resolution: Remove dead code (leftover since OOM refactors).
2014-11-06 09:51:44 +01:00
Eliseo Martínez
9de544c785 Fix warnings: ops.c: cursor_pos_info(): Various (2): MI.
Problems: Result of operation is garbage or undefined @ 5087.
          http://neovim.org/doc/reports/clang/report-2e3118.html#EndPath

          Result of operation is garbage or undefined @ 5149.

Diagnostic: Multithreading issues.
Rationale : All reported problems can only occur if accesed globals
            change state while executing function, which could only
            happen in a multithreaded environment.
Resolution: Use local variables (copy globals on entry).
            Note that this change alters function semantics, as now
            function only depends on global values at entry time.
            This shouldn't be a problem, though, as new semantics should
            be in fact better.
2014-11-06 09:51:44 +01:00
Eliseo Martínez
0c135a2ff4 Fix warnings: ops.c: do_join(): Nonnull violation: FP.
Problem: Argument with 'nonnull' attribute passed null @ 3540.
         http://neovim.org/doc/reports/clang/report-fc14e0.html#EndPath.

Diagnostic: False potitive.
Rationale : `count` should be >= 2 by function precondition.
Resolution: Assert precondition.
2014-11-06 09:51:44 +01:00
Eliseo Martínez
bd7ee7d6a9 Fix warnings: screen.c: draw_tabline(): Dead assignment: HI.
Problem: Dead assignment @ 7711.
         http://neovim.org/doc/reports/clang/report-835eb6.html#EndPath

Diagnostic: Harmless issue.
Rationale : `scol` is only used within `FOR_ALL_TABS` body, which
            assigns another value to `scol` at the beginning of each
            iteration. If `FOR_ALL_TABS` body would not execute (no
            tabs) nothing harmful would happen, as code following
            `FOR_ALL_TABS` doesn't use `scol`.
Resolution: Remove.
2014-11-06 09:51:44 +01:00
Eliseo Martínez
cc996e748d Fix warnings: screen.c: showmode(): Dead assignment: HI.
Problem: Dead assignment @ 7535.
         http://neovim.org/doc/reports/clang/report-19a5cd.html#EndPath

Diagnostic: Harmless issue.
Rationale : `length = msg_col;` is unconditionally executed after this.
Resolution: Remove assignment.
2014-11-06 09:51:43 +01:00
Eliseo Martínez
04b4658978 Fix warnings: screen.c: win_line(): Dead assigment: HI.
Problem: Dead assigment.
         http://neovim.org/doc/reports/clang/report-7362ba.html#EndPath

Diagnostic: Harmless issue.
Rationale : `boguscols` is in fact unread by downstream code.
Resolution: Comment out. This is preferred here over just removing the
            line because involved logic is complex, and future readers
            of this code could find this extra knowledge useful to
            understand what the code is doing.
2014-11-06 09:51:43 +01:00
Eliseo Martínez
1eb46675b7 Fix warnings: screen.c: win_line(): Dead initialization: HI.
Problem: Dead initialization @ 3477.
         http://neovim.org/doc/reports/clang/report-94b736.html#EndPath

Diagnostic: Harmless issue.
Rationale : `len` is assigned a new value just some lines below. So,
            this just seems something due to old-style variable
            declarations.
Resolution: We could just remove initialization, but prefer moving
            declaration down to point of initialization.
2014-11-06 09:51:43 +01:00
Eliseo Martínez
a32442db85 Fix warnings: screen.c: redraw_asap(): Various (6): MI.
Problems: Argument with 'nonnull' attribute passed null @ 277.
          http://neovim.org/doc/reports/clang/report-9c3614.html#EndPath

          Result of operation is garbage or undefined @ 281.
          http://neovim.org/doc/reports/clang/report-45efbf.html#EndPath

          Argument with 'nonnull' attribute passed null @ 306.
          http://neovim.org/doc/reports/clang/report-ffb84f.html#EndPath

          Result of operation is garbage or undefined @ 311.
          http://neovim.org/doc/reports/clang/report-d04333.html#EndPath

          Argument with 'nonnull' attribute passed null @ 315.
          http://neovim.org/doc/reports/clang/report-786819.html#EndPath

          Uninitialized argument value @ 328.
          http://neovim.org/doc/reports/clang/report-2a5506.html#EndPath

Diagnostic: Multithreading issues.
Rationale : All reported problems can only occur if accesed globals
            change state while executing function, which could only
            happen in a multithreaded environment.
Resolution: Use local variables.
            Note that this change alters function semantics, as now
            function only depends on global values at entry time.
            This shouldn't be a problem, though, as new semantics should
            be in fact better.
2014-11-06 09:51:42 +01:00
Eliseo Martínez
b6c1fae6a9 Fix warnings: cursor_shape.c: parse_shape_opt(): Garbage value: FP.
Problem: Assigned value is garbage or undefined @ 187.
         http://neovim.org/doc/reports/clang/report-7b7d61.html#EndPath.

Diagnostic: False positive.
Rationale : `colonp`, must be `>= modep, or null` by `vim_strchr`
            postcondition. At this point we also it's not null and it's
            not equal to `modep`, by previous code. So, it must be
            `> modep`.
Resolution: Assert `colonp > modep`.
2014-11-06 09:51:42 +01:00