vim-patch:7.4.416

Problem:    Problem with breakindent/showbreak and tabs.
Solution:   Handle tabs differently. (Christian Brabandt)

https://code.google.com/p/vim/source/detail?name=v7-4-416
Convert some values from buffer_defs.h to bools
Merge pull request #1345 from war1025/dev/wininfo_bools

Convert some values into bools
vim-patch:7.4.417

Problem:    After splitting a window and setting 'breakindent' the default
            minimum with is not respected.
Solution:   Call briopt_check() when copying options to a new window.

https://code.google.com/p/vim/source/detail?r=v7-4-417
Merge pull request #1283 from splinterofchaos/breakindent-tab

vim-patch:7.4.416 + vim-patch:7.4.417
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'
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
             inmediately after.
Resolution : State precondition in doc and assert it at entry.
Fix warnings: spell.c: spell_edit_score(): Garbage value: MI.

Problem    : Assigned value is garbage or undefined @ 12526.
Diagnostic : Multithreading issue.
Rationale  : Error only occurs if global has_mbyte is modified while
             function is executing.
Resolution : Use local copy of global.