aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/assert.h4
-rw-r--r--src/nvim/indent.c13
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