Commit Graph

2234 Commits

Author SHA1 Message Date
Eliseo Martínez
d6472f459b Fix warnings: ex_getln.c: init_history(): Double free: FP.
Problem    : Double free @ 4249.
Diagnostic : False positive.
Rationale  : Codepath leading to error contains two consecutive
             iterations in which `if (--j < 0)` is true.
             That executes `free` two consecutive times with the same
             value (hislen - 1) for j, with leads to double free.
             Now, that can only happen with j == 0 && hislen == 1.
             And that would imply j == hisidx[type] too, which would
             take the following break.
             So, the error codepath cannot really happen, but the
             compiler cannot deduce the last implication.
Resolution : We have two possible solutions for this:
             1.- Comparing value of j before and after updating it,
                 and breaking out of iteration if equal.
                 That changes nothing in functionality, but teaches the
                 compiler his proposed error codepath is impossible.
             2.- Nullify pointer after freeing.
                 This way, the compiler still thinks his error codepath
                 is possible, but it's not an error anymore, as
                 free(NULL) is a no-op.
             We opt for solution 2, as solution 1 requires adding
             logic that adds nothing (and having to explain that clearly
             in aside comments) just for the purpose of silencing
             warning. On the other hand, solution 2 improves the code,
             adding something considered good practice in any case,
             and therefore doesn't require further explanation.
2014-11-11 01:43:12 +01:00
Eliseo Martínez
ea1f883b19 Fix warnings: ex_eval.c: report_pending(): Np dereference: FP.
Problem    : Dereference of null pointer @ 711.
Diagnostic : False positive.
Rationale  : Codepath producing error invokes this function with values
             `action=RPC_DISCARD, pending=CSTP_FINISH, value=NULL`.
             Now, for some reason, the analyzer is remembering that
             `value` is null, and that `action` is `RPC_DISCARD`, but
             it's not remembering that `pending` is `CSTP_FINISH`.
             Then, it's taking the wrong branch in the switch for
             `pending`. That path would never occur invocating the
             function with those values.
Resolution : Assert function precondition between `pending` and `value`.
             This is, let the compiler know that `value` being null
             implies `pending` not containing `CSTP_THROW`.
2014-11-11 01:43:12 +01:00
Eliseo Martínez
1575642b11 Fix warnings: ex_docmd.c: eval_vars(): Unitialized arg: FP.
Problem    : Uninitialized argument value @ 7704.
Diagnostic : False positive.
Rationale  : Error occurs if `switch(spec_idx)` doesn't enter any case,
             which should not occur after
             `spec_idx = find_cmdline_var(...)` returned non-negative.
Resolution : Add default clause to switch and error if reached.
2014-11-11 01:43:12 +01:00
Eliseo Martínez
49cf578b76 Fix warnings: ex_cmds2.c: do_source(): Unitialized arg (2): MI.
Problem    : Uninitialized argument value @ 2485.
             Uninitialized argument value @ 2507.
Diagnostic : Multithreading issues.
Rationale  : Error can only occur if globals `do_profiling`, `time_fd`
             are modified while function is executing.
Resolution : Use local copy of globals.
2014-11-11 01:43:11 +01:00
Eliseo Martínez
739124c1b8 Fix warnings: ex_cmds2.c: do_source(): Np dereference: FP.
Problem    : Dereference of null pointer @ 2462.
Diagnostic : False positive.
Rationale  : Error occurred if neither loop neither following if were
             entered (this implied `script_items.ga_len < 0`, which
             should not be possible).
Resolution : Assert not negative length (loop or if entered).
2014-11-11 01:43:11 +01:00
Eliseo Martínez
3efd39a41b Fix warnings: ex_cmds.c: do_ecmd(): Np dereference: FP.
Problem    : Dereference of null pointer @ 2768.
Diagnostic : False positive.
Rationale  : `win_valid(oldwin)` implies `oldwin` not null.
Resolution : Assert `oldwin` not null.
2014-11-11 01:43:11 +01:00
Eliseo Martínez
9c3a3e1381 Fix warnings: ex_cmds.c: do_ascii(): Garbage value (2): MI.
Problems   : Assigned value is garbage or undefined @ 127.
             Assigned value is garbage or undefined @ 152.
Diagnostic : Multithreading issues.
Rationale  : Error could only occurr if global `enc_utf8` changed while
             the function is executing.
Resolution : Use local copy of global var.
2014-11-11 01:43:10 +01:00
John Szakmeister
2540155591 build: fix CMAKE_MODULE_PATH usage
Fixes #1447.  `CMAKE_MODULE_PATH` is meant to be a list of directories,
and as such, is not the proper way to launch our scripts.  Let's use
`${PROJECT_SOURCE_DIR}/cmake` instead.  Also, let's not outright set
`CMAKE_MODULE_PATH`, but instead append our location to the list.
2014-11-10 19:26:01 -05:00
Justin M. Keyes
3080672650 Merge pull request #1448 from tarruda/shell-systemlist-test-fixes
Fixes to shell.c, systemlist and functional tests
2014-11-10 19:01:53 -05:00
Thiago de Arruda
3e8ef31ada shell: Use job_write_cb for closing stdin
Commit @45525853d352 removed usage of the `job_write_cb` for closing stdin due
to a memory error, but that doesn't work anymore because `job_close_in` closes
stdin immediately, possibly trimming input data before it is fully written.

Since most memory issues with jobs have been fixed, re-add the `job_write_cb`
call to ensure stdin is only closed when it should. Also add tests for scenarios
where using the callback makes a difference.
2014-11-10 18:47:46 -03:00
Thiago de Arruda
ab826d88f6 eval: Return an empty list from systemlist() when there's no output
This is the behavior on vim's `systemlist()`.
2014-11-10 18:47:03 -03:00
Thiago de Arruda
63a98fca55 test: Fix nondeterminism in tests with notifications
Tests which spin the event loop and stop it in a notification handler have a
chance of re-entering the event loop due to the `vim_eval` call in the
`request()` helper(assuming the request call is what triggered the
notification). Since this will cause an error to be thrown by the lua client,
don't send the extra `vim_eval` request when the loop has been stopped.
2014-11-10 18:46:09 -03:00
Justin M. Keyes
b0cd397a43 Merge pull request #1416 from jondkinney/master
Fix the nvim-clipboard help instructions
2014-11-10 12:17:47 -05:00
Justin M. Keyes
20b895e624 Merge pull request #1442 from fwalch/improve-legacy2luatest
Improve legacy2luatest script.
2014-11-10 12:15:19 -05:00
John Szakmeister
911c5518a5 Merge pull request #1443 from jszakmeister/allow-root-dir-installs
build: allow installing into the root directory (/)
2014-11-09 19:10:29 -05:00
Justin M. Keyes
8e281b3f70 Merge pull request #1429 from oni-link/fix.job_start.leak
Fix memory leak in job_start().
2014-11-09 18:25:42 -05:00
John Szakmeister
6e87557c08 build: allow installing into the root directory (/)
It turns out that CMake always canonicalizes `CMAKE_INSTALL_PREFIX` to
an absolute path--if it's a relative path, it canonicalizes it relative
to the build directory.  As a result, the only thing the DESTDIR and
relative directory check prevents is an installation into the root
directory since CMake strips the trailing slash, turning "/" into an
empty string.  Let's just remove the check all together, since it cannot
accomplish what we intended.
2014-11-09 17:48:19 -05:00
John Szakmeister
5714044617 Merge pull request #1441 from jszakmeister/remove-redundant-define
Remove redundant USE_ICONV define from config.h.in.
2014-11-09 14:51:25 -05:00
Justin M. Keyes
8a0074d9b8 Merge pull request #1403 from fwalch/version-flags
version: Add compilation info.
2014-11-09 13:54:43 -05:00
Justin M. Keyes
e9ac693bcd Merge pull request #1389 from elmart/clang-analysis-fixes
Fix clang analysis warnings.
2014-11-09 13:31:51 -05:00
Florian Walch
176930fa56 version: Add compilation info. 2014-11-09 18:34:57 +01:00
Florian Walch
9376b3db4b Improve legacy2luatest script. 2014-11-09 15:06:03 +01:00
John Szakmeister
2513c5f648 Remove redundant USE_ICONV define from config.h.in.
This was noticed during a review of #1437.
2014-11-09 08:34:29 -05:00
John Szakmeister
dcccc1a50d Merge pull request #1437 from jszakmeister/build-search-fixes
A few fixes for some build-related issues.
2014-11-09 08:31:33 -05:00
John Szakmeister
c744bb8144 Merge pull request #1440 from jszakmeister/fix-og-flag-usage
build: only attempt to use -Og if it's supported
2014-11-09 08:17:31 -05:00
John Szakmeister
66f16619e4 Merge pull request #1428 from xu-cheng/relocate-formula
Homebrew: move formula to neovim/homebrew-neovim
2014-11-09 07:16:50 -05:00
Xu Cheng
0bc347d85d Homebrew: move formula to neovim/homebrew-neovim 2014-11-09 20:14:01 +08:00
John Szakmeister
d51c0a9471 build: only attempt to use -Og if it's supported
Commit a1d411f9c9 just assumes that gcc
will support the `-Og` option, but gcc that comes with Ubuntu 12.04 does
not.  Let's check to see if the flag is supported, and then decide
whether to enable it or not.
2014-11-09 06:58:17 -05:00
John Szakmeister
05c1394fcd Move many includes down to the EXITFREE block.
They're unnecessary for the rest of the file, and they're only there at
all to help implement `free_all_mem` for use with Clang's Address
Sanitizer.  So let's move them to avoid any confusion about why they are
there.
2014-11-09 06:27:37 -05:00
John Szakmeister
1ea90f6971 Merge pull request #1400 from jszakmeister/install-helpers-destdir
build: fix the usage of DESTDIR in InstallHelpers.cmake
2014-11-09 05:03:05 -05:00
oni-link
dba8433723 Try to fix problem found in the Travis Ci build.
An uv_pipe_t handle for a WStream could be left open for a
particular code path.

Patch by tarruda.
2014-11-09 10:35:39 +01:00
oni-link
cf95d27689 Mark some function arguments as [consumed] in the docs.
The argument argv of job_start() and channel_from_job() will be
freed. Mark them as such in the comments of this functions.
2014-11-09 10:35:39 +01:00
oni-link
70cb863096 job: Fix memory leak in job_start().
If a new job cannot be started because no slots are free, we return early
without freeing the argv argument.
2014-11-09 10:35:39 +01:00
Justin M. Keyes
c9df7ba308 Merge pull request #1383 from fwalch/nvim-buildtype
CMake: Set custom RelWithDebInfo compile flags.
2014-11-08 18:39:12 -05:00
John Szakmeister
938faf5e2d build: fix the usage of DESTDIR in InstallHelpers.cmake
It turns out that `file(INSTALL ...)` already accounts for `DESTDIR`, so
this wasn't creating the directory structure in the correct location.
Instead, we need to do our existence check with `DESTDIR`, but leave it
off when doing the install step.

While we're at it, add a check to make sure `ENV{DESTDIR}` is not being
used with a relative path, as that construct doesn't make much sense.

This fixes issue #1387 discovered while trying to make helptag
generation work correctly in #1381.
2014-11-08 16:55:15 -05:00
John Szakmeister
9344a40e74 build: pull iconv detection into its own FindIconv.cmake file
This will provide better control for those who may want to alter which
one gets used.
2014-11-08 16:22:35 -05:00
John Szakmeister
203a5166a0 build: give priority to /sw and /opt/local on Mac OS X
Unfortunately, we can't force the specific inclusion of a header file.
So if anything add /opt/local/include to the include path--such as
libintl--then other dependencies might be drawn from /opt/local at
compile time, even though we detected them elsewhere at configure time.
This, in turn, causes issues with mixed versions, such as the iconv.h
header being pulled from /opt/local/include, but linked against the
library in /usr/lib--which can be mismatched versions.

So, despite CMake's best effort to treat /sw and /opt/local as just
another system area, we really need to give them preferential treatment.
To do this, we add them to CMAKE_PREFIX_PATH.

This fixes an issue discovered while re-enabling iconv in #1370.
2014-11-08 16:21:47 -05:00
John Szakmeister
05f78d30ac build: use the proper libintl include variable
What was there worked, but it wasn't meant to be the variable that you
use for inclusion.
2014-11-08 16:11:12 -05:00
Florian Walch
a1d411f9c9 CMake: Set custom RelWithDebInfo compile flags. 2014-11-08 21:54:30 +01:00
John Szakmeister
2aeda4ba6f Merge pull request #1426 from jszakmeister/change-release-opt-default
build: default to using -O2 for release builds
2014-11-08 09:29:05 -05:00
John Szakmeister
7d0a689476 Merge pull request #1434 from xu-cheng/fix-1433
DownloadAndExtractFile.cmake: only skip if directory is not empty.
2014-11-08 09:28:14 -05:00
Xu Cheng
cca2c089cf 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. See PR #1411.

Also make sure to skip only if directory is not empty. Fix #1433.
2014-11-08 20:14:32 +08:00
John Szakmeister
5d0f8b63e3 Revert "build: don't download and extract tarball if source is already present"
This reverts commit 9065898264.

It failed to work correctly on a fresh clone.  See #1433.
2014-11-08 05:43:17 -05:00
Thiago de Arruda
847d5ffa7c Merge PR #1399 'Better handling for invalid msgpack-rpc' 2014-11-07 13:44:49 -03:00
Rui Abreu Ferreira
4e880f3f00 msgpack-rpc: Close channel on invalid msgpack RPC
- When an invalid msgpack RPC msg is received from a channel
  we now close that channel all calls on that channel fail with
  an error message.
2014-11-07 13:43:32 -03:00
Rui Abreu Ferreira
2729ad195b msgpack-rpc: Don't try to write into a closed channel 2014-11-07 13:43:21 -03:00
Rui Abreu Ferreira
da3f097807 msgpack-rpc: Fix typo in validation message 2014-11-07 13:43:01 -03:00
Rui Abreu Ferreira
214d54b42e msgpack-rpc: Return from msgpack_rpc_validate on error
- When validating a msgpack msg we need to return on the first error
  otherwise we can SEGFAULT with invalid checks
2014-11-07 13:42:43 -03:00
Thiago de Arruda
05ae9781b5 Merge PR #1255 '[RDY] Set v:job_data[2] line-wise and `jobsend(,[list]). (#1243)' 2014-11-07 13:35:49 -03:00
Scott Prager
ea3296ad85 job_spec: Fix bad test. 2014-11-07 13:34:56 -03:00