From 5fcdb630253b8d71fd30a2259f72aeb27e1676e0 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Wed, 2 Sep 2020 22:22:15 -0400 Subject: [PATCH] vim-patch:8.2.1564: a few remaining errors from ubsan MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: A few remaining errors from ubsan. Solution: Avoid the warnings. (Dominique Pellé, closes vim/vim#6837) https://github.com/vim/vim/commit/4ad739fc053c1666d07ba1cf59be26cb1c3e52d7 --- src/nvim/spell.c | 4 ++-- src/nvim/spellfile.c | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/nvim/spell.c b/src/nvim/spell.c index 95948dac78..ad235f1f14 100644 --- a/src/nvim/spell.c +++ b/src/nvim/spell.c @@ -5765,14 +5765,14 @@ cleanup_suggestions ( ) FUNC_ATTR_NONNULL_ALL { - suggest_T *stp = &SUG(*gap, 0); - if (gap->ga_len > 0) { // Sort the list. qsort(gap->ga_data, (size_t)gap->ga_len, sizeof(suggest_T), sug_compare); // Truncate the list to the number of suggestions that will be displayed. if (gap->ga_len > keep) { + suggest_T *const stp = &SUG(*gap, 0); + for (int i = keep; i < gap->ga_len; i++) { xfree(stp[i].st_word); } diff --git a/src/nvim/spellfile.c b/src/nvim/spellfile.c index c2212cf767..09d8646c6d 100644 --- a/src/nvim/spellfile.c +++ b/src/nvim/spellfile.c @@ -984,15 +984,17 @@ nextone: static char_u *read_cnt_string(FILE *fd, int cnt_bytes, int *cntp) { int cnt = 0; - int i; char_u *str; // read the length bytes, MSB first - for (i = 0; i < cnt_bytes; ++i) - cnt = (cnt << 8) + getc(fd); - if (cnt < 0) { - *cntp = SP_TRUNCERROR; - return NULL; + for (int i = 0; i < cnt_bytes; i++) { + const int c = getc(fd); + + if (c == EOF) { + *cntp = SP_TRUNCERROR; + return NULL; + } + cnt = (cnt << 8) + (unsigned)c; } *cntp = cnt; if (cnt == 0)