diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nvim/assert.h | 4 | ||||
| -rw-r--r-- | src/nvim/indent.c | 13 | 
2 files changed, 8 insertions, 9 deletions
| diff --git a/src/nvim/assert.h b/src/nvim/assert.h index db21bed0e2..6e8e57c183 100644 --- a/src/nvim/assert.h +++ b/src/nvim/assert.h @@ -145,7 +145,7 @@    } while (0)  #else  # define STRICT_ADD(a, b, c, t) \ -  do { *(c) = (t)(a + b); } while (0) +  do { *(c) = (t)((a) + (b)); } while (0)  #endif  /// @def STRICT_SUB @@ -160,7 +160,7 @@    } while (0)  #else  # define STRICT_SUB(a, b, c, t) \ -  do { *(c) = (t)(a - b); } while (0) +  do { *(c) = (t)((a) - (b)); } while (0)  #endif  #endif  // NVIM_ASSERT_H diff --git a/src/nvim/indent.c b/src/nvim/indent.c index 13534ac1a9..19456da45c 100644 --- a/src/nvim/indent.c +++ b/src/nvim/indent.c @@ -204,13 +204,12 @@ int set_indent(int size, int flags)    // characters and allocate accordingly.  We will fill the rest with spaces    // after the if (!curbuf->b_p_et) below.    if (orig_char_len != -1) { -    assert(orig_char_len + size - ind_done + line_len >= 0); -    size_t n;  // = orig_char_len + size - ind_done + line_len -    size_t n2; -    STRICT_ADD(orig_char_len, size, &n, size_t); -    STRICT_ADD(ind_done, line_len, &n2, size_t); -    STRICT_SUB(n, n2, &n, size_t); -    newline = xmalloc(n); +    int newline_size;  // = orig_char_len + size - ind_done + line_len +    STRICT_ADD(orig_char_len, size, &newline_size, int); +    STRICT_SUB(newline_size, ind_done, &newline_size, int); +    STRICT_ADD(newline_size, line_len, &newline_size, int); +    assert(newline_size >= 0); +    newline = xmalloc((size_t)newline_size);      todo = size - ind_done;      // Set total length of indent in characters, which may have been | 
