Commit Graph

2925 Commits

Author SHA1 Message Date
Mike Zeller
f28941b96d illumos requires the use of limits.h for things like INT_MAX #2049 2015-02-26 11:42:05 -05:00
Eliseo Martínez
36092f3a0c Fix warnings: message.c: copy_hotkeys_and_msg: Garbage value: FP. #2062
Problem    : Branch condition evaluates to a garbage value @ 2868.
Diagnostic : False positive.
Rationale  : Array has_hotkey, declared at 2812, is initialized by
             console_dialog_alloc (only the needed number of elements).
             That same number of elements is used by
             copy_hotkeys_and_msg.
             Suggested path error is impossible, because it involves a
             different number of elements in those functions.
Resolution : Above condition is cumbersome to prove through assertions.
             Thus, we prefer to just initialize the array to all-false
             at declaration point before calling console_dialog_alloc.
2015-02-26 09:04:36 +01:00
John Szakmeister
61c98e7e35 Merge pull request #2053 from jszakmeister/fix-libuv-libraries
Fix collection of libuv dependent libraries.
2015-02-25 05:05:18 -05:00
John Szakmeister
e077f4ee99 build: filter off libuv from PC_LIBUV_LIBRARIES
Otherwise, the -rdynamic that is being passed on the command line will
require a dynamic link, even though we often want a static one.
2015-02-24 14:01:25 -05:00
John Szakmeister
9bc1e4335c build: make sure our deps area is picked up for pkg-config files 2015-02-24 14:01:20 -05:00
Thiago de Arruda
56f371cb82 Merge PR #2037 'Job control fixes and pseudo terminal support' 2015-02-23 22:25:36 -03:00
Thiago de Arruda
d7e560e5b3 job: Allow spawning jobs connected to pseudo terminals 2015-02-23 21:43:33 -03:00
Thiago de Arruda
1ec7db70ec job: Refactor process spawning and startup arguments
- process spawning was decoupled from the rest of the job control logic.  The
  goal is reusing it for spawning processes connected to pseudo terminal file
  descriptors.
- job_start now receives a JobOptions structure containing all the startup
  options.
2015-02-23 21:43:33 -03:00
Thiago de Arruda
0b8d3cb507 job: Send SIGTERM before calling job_stop in job_teardown
Send sigterm immediately since it can be caught by processes. If they don't
respond and are still alive after a while, SIGKILL will be sent.
2015-02-23 21:43:33 -03:00
Thiago de Arruda
d28011ee1c eval: Fix buffering of data in job autocommands
Job autocommands will no longer buffer data chunks that don't end in newlines
characters.
2015-02-23 21:43:33 -03:00
Florian Walch
0df6b9168e Simpler handling for "always-on"/"always-off" options. #2002
'compatible' and 'edcompatible' are forced to be off.
'ttyfast' is forced to be on.
2015-02-22 14:55:58 -05:00
Thiago de Arruda
3e29231684 Merge PR #2039 'Update unibilium for OSX' 2015-02-21 22:43:57 -03:00
Thiago de Arruda
97f8251472 tui: Also use xterm-256color when TERM=screen and COLORTERM != NULL
When COLORTERM != null force xterm-256color capabilities when TERM equals xterm
or screen.
2015-02-21 22:28:38 -03:00
Thiago de Arruda
0ed3d66bef deps: Update unibilium version to add OSX support 2015-02-21 22:17:47 -03:00
Eliseo Martínez
e9c5f96964 Merge #2027: Fix clang analysis warnings. (7) 2015-02-21 16:51:53 +01:00
Eliseo Martínez
c784ffb308 Fix warnings: window.c: close_last_window_tabpage(): Use after free: RI.
Problem    : Use after free @ 1795.
Diagnostic : Real issue.
Rationale  : prev_curtab can in fact be freed as a result of call
             `win_close_othertab(win, free_buf, prev_curtab);`, but it's
             later used at
             `sprintf(..., tabpage_index(prev_curtab));`.
             This was introduced at
             3ffc5d81c3.
Resolution : Move prev_idx calculation before the call freeing
             prev_curtab.
2015-02-21 10:35:48 +01:00
Eliseo Martínez
56e339c594 Fix warnings: screen.c: screen_puts_len(): Various (4): FP/MI.
Problems   : Assigned value is garbage or undefined @ 5363.
             Result of operation is garbage or undefined @ 5356.
             Result of operation is garbage or undefined @ 5320.
             Result of operation is garbage or undefined @ 5192.
Diagnostic : False positives / Multithreading issues.
Rationale  : Suggested error paths contain incoherent values for
             has_mbyte, enc_utf8, and enc_dbcs, which should always hold
             the relationship has_mbyte = enc_utf8 || enc_dbcs, with
             enc_utf8 and enc_dbcs being mutually exclusive.
             Asserting on the globals, though, fails, because checker
             believes they could be modified by other threads in
             between.
Resolution : Make local copy of globals and assert relationship on them.
2015-02-21 10:35:48 +01:00
Thiago de Arruda
c48f835749 Merge PR #1997 'Remove term modules' 2015-02-21 06:33:18 -03:00
Thiago de Arruda
6293b5513c tui: Use unibi_format instead of unibi_run
The current will segfault for large chunks of output because the output buffer
will be overrun.

Using unibi_format is simple because we can simply flush the buffer when its
full.
2015-02-21 05:09:02 -03:00
Thiago de Arruda
eb8f6bec86 tui: Remove option cache 2015-02-21 05:09:02 -03:00
Thiago de Arruda
c58907dac1 tui: Set setaf/setab capabilities for TERM=xterm
Many common terminals that set TERM=xterm and $COLORTERM support 256 colors. If
this is detected, use force the hardcoded xterm's setaf/setab capabilities.
2015-02-21 05:09:02 -03:00
Thiago de Arruda
3baba1e7bc refactor: Remove term modules and termcap options
- Removed term.c, term.h and term_defs.h
- Tests for T_* values were removed. screen.c was simplified as a
  consequence(the best strategy for drawing is implemented in the UI layer)
- Redraw functions now call ui.c functions directly. Updates are flushed with
  `ui_flush()`
- Removed all termcap options(they now return empty strings for compatibility)
- &term/&ttybuiltin options return a constant value(nvim)
- &t_Co is still available, but it mirrors t_colors directly
- Remove cursor tracking from screen.c and the `screen_start` function. Now the
  UI is expected to maintain cursor state across any call, and reset it when
  resized.
- Remove unused code
2015-02-21 05:08:21 -03:00
Thiago de Arruda
486d2e944d Merge PR #2032 'Some test fixes' 2015-02-21 04:47:45 -03:00
Thiago de Arruda
f9d327c88b test: Add extra screen expectation to prevent race condition
This is to ensure ctrl+c is only pressed after the command has started executing
in the viml_system_spec.lua system() interrupt test.
2015-02-20 20:41:03 -03:00
Thiago de Arruda
a21d952bdd test: Remove temporary files created by 072_undo_file_spec.lua 2015-02-20 20:40:02 -03:00
Thiago de Arruda
aed19a7c5f test: Remove -g flag from pynvim call in Screen.debug
The flag is no longer valid(pynvim always starts a GUI)
2015-02-20 20:38:42 -03:00
Eliseo Martínez
d35820379f Merge #1983: Fix coverity issues. (5) 2015-02-20 18:50:06 +01:00
Eliseo Martínez
a4bed17d0d coverity/13746: Negative array index write: FP.
Problem    : Negative array index write @ 1042.
Diagnostic : False positive.
Rationale  : Suggested error path cannot occur: idx should be >= 0, as
             previous check ensures there's a matching while/for.
Resolution : Assert idx >= 0.
2015-02-20 17:34:07 +01:00
Eliseo Martínez
24fa25a57f coverity/13683: Out-of-bounds access: RI.
Problem    : Out-of-bounds access @ 3730.
Diagnostic : Real issue.
Rationale  : str is constructed step by step, str_l growing each time.
             str_m is the maximum length of str. So, at every step,
             avail is computed to see if the piece to be added fits in.
             If not, piece is truncated to a max of `avail`, so that str
             stays in bounds. Such blocks where pieces are added are of
             the form `if (str_l < str_m)`. It then follows that once
             one of those pieces exhausts available space on str, no
             other such block should be entered. Formally:

               str_l < strl_m && avail = str_m - str_l && x >= avail
                                    -->
                             str_l + x >= str_m

             Now, suggested error path successively enters blocks where
             str is exhausted. We're not sure if coverity just fails to
             follow above implications, or, on the contrary, it's aware
             of them, but it's signaling the more complex possibility of
             implications not being fulfilled because of possible
             arithmetic overflows. We opt then to assume this last case,
             as the possibility is in fact there.
Resolution : Refactor code so that tracked condition doesn't depend on
             arithmetic implications. Check for overflow.
2015-02-20 17:34:07 +01:00
Eliseo Martínez
33cecbbf16 coverity/72768: Negative array index read: FP.
Problem    : Negative array index read @ 5674.
Diagnostic : False positive.
Rationale  : Problem occurs if for loop does not find any match, which
             implies shl->lnum == 0, and then we enter the
             `if (shl->lnum == lnum)` branch, which implies lnum == 0 as
             well. That's not possible, as function should not be called
             with lnum == 0.
Resolution : Change conditions `shl->lnum == lnum` into `bot != -1`.
2015-02-20 17:34:07 +01:00
Thiago de Arruda
03dd2114a7 Merge PR #1993 'legacy test: migrate test 72' 2015-02-20 13:27:28 -03:00
Fabian Brosda
20054df06e legacy test: migrate test 72 2015-02-20 13:26:59 -03:00
Thiago de Arruda
2f04fd4e72 Merge PR #2025 'More fixes to the new TUI' 2015-02-20 10:16:19 -03:00
Thiago de Arruda
9894720a05 tui: Don't use 'timeout' for determining esc timeout 2015-02-20 09:43:13 -03:00
Thiago de Arruda
c65f18f686 tui: Set default color attributes when scrolling
This is necessary for some terminals, or else they will clear/insert lines with
wrong background color
2015-02-20 09:27:34 -03:00
Thiago de Arruda
1ed7ae6260 tui: Fix terminfo extension indexes
For unibilium extension indexes, use signed integer type initialized with -1 to
distinguish from the first extension string which will always have index 0.
2015-02-20 09:27:34 -03:00
Thiago de Arruda
bbcddc55ee tui: Replace uv_tty_t by uv_pipe_t
It seems uv_tty_t doesn't work properly on OSX(it is set to blocking mode,
which causes UV_RUN_NOWAIT to misbehave).
2015-02-20 09:27:34 -03:00
Thiago de Arruda
20f52f4235 tui: Only send the pastetoggle key if necessary 2015-02-20 09:27:34 -03:00
John Szakmeister
8efb3607a7 Merge pull request #2022 from jszakmeister/update-msgpack-for-freebsd-fix
Update message pack to include the FreeBSD and OpenBSD byteswap fix.
2015-02-20 04:33:01 -05:00
Fabian Brosda
0a7cd65cbc vim-patch:7.4.525 #1988
Problem:    map() leaks memory when there is an error in the expression.
Solution:   Call clear_tv(). (Christian Brabandt)

https://code.google.com/p/vim/source/detail?r=v7-4-525
2015-02-19 17:08:43 -05:00
John Szakmeister
866da6d65e Merge pull request #1964 from jszakmeister/fix-bashism-in-fs-spec-test
Get rid of a bashism in the fs_spec test.
2015-02-19 05:52:43 -05:00
John Szakmeister
0505bb0de8 Update message pack to include the FreeBSD and OpenBSD byteswap fix. 2015-02-19 03:05:48 -05:00
Justin M. Keyes
b1d079c83b Merge #1979 'Enable -Wconversion' 2015-02-18 20:54:15 -05:00
Eliseo Martínez
36340803af Enable -Wconversion: os_unix.c. 2015-02-18 20:54:14 -05:00
Eliseo Martínez
cbabf9491b Enable -Wconversion: keymap.c. 2015-02-18 20:54:13 -05:00
Eliseo Martínez
94db26edbd Enable -Wconversion: indent.c.
Note: Clint was failing because of recommending not to use long. But
converting to long is the proper refactoring here, in as far as other
longs exist. We could, then, disable clint rule, or remove this file
from checking. We choose the former, as it's being discussed what to do
with longs, but a decision has not been taken. So, it seems most
reasonable to allow longs for now, to enable proper refactorings, and
then, when a decision is taken, refactor all longs to some other thing.
2015-02-18 20:54:13 -05:00
Eliseo Martínez
7dd48d7af0 Enable -Wconversion: mark.c.
Refactoring summary:
- MB_STRNICMP: Inlined.
- MB_STRNCMP: Inlined.
2015-02-18 20:54:13 -05:00
Eliseo Martínez
690e43b461 Enable -Wconversion: Passing-by: Remove dead code (MACOS_CONVERT).
MacOS (pre Mac OS X) is not supported anymore.
2015-02-18 20:54:12 -05:00
Eliseo Martínez
7a7c933b86 Enable -Wconversion: ui.c.
Refactoring summary:
- ui_write(): len: int --> size_t
    * parse_abstract_ui_codes(): len: int --> size_t
    * string_convert(): lenp: int * --> size_t *
        - string_convert_ext(): lenp      : int * --> size_t *
                                unconvlenp: int * --> size_t *
            * utf8len_tab_zero: char[] --> uint8_t[]
            * iconv_string(): slen      : int --> size_t
                              unconvlenp: int * --> size_t *
                              resultlenp: int * --> size_t *
        - mch_print_text_out(): len: int --> size_t
    * out_pos: int --> size_t
2015-02-18 20:54:12 -05:00
Thiago de Arruda
366662d932 Merge PR #2007 'Fixes for the new TUI' 2015-02-18 13:31:39 -03:00