vim-patch:7.4.421

Problem:    Crash when searching for "\ze*". (Urtica Dioica)
Solution:   Disallow a multi after \ze and \zs.

https://code.google.com/p/vim/source/detail?r=v7-4-421
vim-patch:7.4.437

Problem:    New and old regexp engine are not consistent.
Solution:   Also give an error for "\ze*" for the old regexp engine.

https://code.google.com/p/vim/source/detail?r=v7-4-437
Merge #1322 'vim-patch:7.4.421 + vim-patch:7.4.437'
jobstart: Check prg arguments for NULL.
Fix api metadata function name in docs

The documentation mentions `vim_get_api_metadata`, but the actual function is `vim_get_api_info`
Use cmake --build instead of Make

- If possble try to abstract away from Make, and use cmake --build
- third-party still needs to find Make to build some components
- Removed search for Make from CMakeLists.txt
* for CMake < 3.0 --build has no color output
Merge pull request #1473 from alexgenco/patch-1

Fix api metadata function name in docs
vim-patch:7.4.378 #1217

Problem:    Title of quickfist list is not kept for setqflist(list, 'r').
Solution:   Keep the title.  Add a test. (Lcd)

https://code.google.com/p/vim/source/detail?r=v7-4-378
Update README.md
Update README.md
Fix warnings: option.c: do_set(): Dead assignment: HI.

Problem    : Dead assignment @ 2566.
Diagnostic : Harmless issue.
Rationale  : `nextchar` is used as a lookahead buffer for the character
             next to the currently examined token. Sometimes it also
             saves that char while original string is modified (original
             position of nextchar is nullified for the string to
             terminate there). In summary, it's an auxiliary variable
             with no particular complex meaning. Safe to remove if not
             used.
Resolution : Remove dead assignment.
Fix warnings: quickfix.c: qf_add_entry(): Np dereference: FP.

Problem    : Dereference of null pointer @ 921.
Diagnostic : False positive.
Rationale  : If `qi->qf_lists[qi->qf_curlist].qf_count == 0` doesn't
             hold, we should be calling function with nonnull `*prevp`.
Resolution : Assert nonnull.
Fix warnings: regexp_nfa.c: nfa_regatom(): Dead assignment: HI.

Problem    : Dead assignment @ 1554.
Diagnostic : Harmless issue.
Rationale  : `result` is used when analyzing if a bracketed expresion
             `[<whatever>]` can be condensed into a character class. Not
             used for anything else anywhere. So, it's safe to remove.
Resolution : Remove dead assingment and move declaration of `result` to
             the scope where it's used.
Fix warnings: search.c: find_pattern_in_path(): Np dereference: MI.

Problem    : Dereference of null pointer @ 4395.
Diagnostic : Multithreading issue.
Rationale  : Problem occurs only if global g_do_tagpreview changed while
             funcion is executing.
Resolution : Use local copy of global var.
Fix warnings: spell.c: find_word(): Dead assignment: HI.

Problem    : Dead assignment @ 1602.
Diagnostic : Harmless issue.
Rationale  : Code using this assignment (line 1666) was disabled. Vim's
             tip at Wed Nov 12 13:07:54 2014 +0100 (changeset
             6352:2f7bf5f90f57) hasn't changed this yet.
Resolution : Disable assignment. Directive processors are used for that
             in order to match the way the other code was disabled.
Fix warnings: spell.c: spell_move_to(): Null arg: FP.

Problem    : Argument with 'nonnull' attribute passed null @ 2118.
Diagnostic : False positive.
Rationale  : Error happens when `if (buflen < len + MAXWLEN + 2) {` is
             not entered on the first iteration, which cannot happen
             because buflen is 0 on the first iteration, so the
             condition should always hold.
Resolution : Assert existence of buffer with appropiate length after
             conditional (which prevents previous error path).
Fix warnings: spell.c: spell_move_to(): Garbage value: RI.

Problem    : Result of operation is garbage or undefined @ 2238.
Diagnostic : Real issue.
Rationale  : Problem occurs when searching forward starting on an empty
             line. This is, at 2127:
             ```
             p = buf + skip;
             endp = buf + len;
             while (p < endp) {
             ```
             when skip == 0, len == 0, implying p == endp and therefore
             not entering the loop.
             Under those conditions, comparison
             ```
             if (attr == HLF_COUNT)
             ```
             at line 2242 is really using a garbage value for `attr`.
             Most of the time the error doesn't produce visible problems
             as it only affects when dealing with wrapped words.
Resolution : Initialize `attr` at declaration to `HLF_COUNT`, which is
             used in the code when no bad word found yet.
Fix warnings: spell.c: spell_read_aff(): Uninitialized arg: RI.

Problem    : Uninitialized argument value @ 4469.
Diagnostic : Real issue.
Rationale  : Happens when a line contains a spell info item (NAME, HOME,
             VERSION, AUTHOR, EMAIL, COPYRIGHT), which expect a second
             item, but then the second item is not present.
Resolution : Add guard (item count > 1) to failing branch.
Fix warnings: spell.c: store_aff_word(): Garbage value: RI.

Problem    : Result of operation is garbage or undefined @ 5809.
Diagnostic : Real issue.
Rationale  : When copying flags, first access to
             `use_pfxlist[use_pfxlen]` was garbage if
             `spin->si_compflags` was null.
Resolution : Make sure `use_pfxlist[use_pfxlen]` always has a value (NUL
             if `spin->si_compflags` is NULL).
Fix warnings: spell.c: getroom(): Np dereference: FP/RI.

Problem    : Dereference of null pointer @ 6089.
Diagnostic : False positive / Real issue.
Rationale  : From the code, it seems the intent is that len parameter
             should never exceed SBLOCKSIZE. But the code checking for
             that does in fact cause a null pointer dereference just
             immediately after.
Resolution : State precondition in doc and assert it at entry.