diff options
Diffstat (limited to 'src/nvim/shada.c')
-rw-r--r-- | src/nvim/shada.c | 97 |
1 files changed, 50 insertions, 47 deletions
diff --git a/src/nvim/shada.c b/src/nvim/shada.c index 84ab5190bf..2693cb0273 100644 --- a/src/nvim/shada.c +++ b/src/nvim/shada.c @@ -512,8 +512,8 @@ static inline void hmll_init(HMLList *const hmll, const size_t size) /// /// @return `for` cycle header (use `HMLL_FORALL(hmll, cur_entry) {body}`). #define HMLL_FORALL(hmll, cur_entry, code) \ - for (HMLListEntry *cur_entry = (hmll)->first; cur_entry != NULL; \ - cur_entry = cur_entry->next) { \ + for (HMLListEntry *(cur_entry) = (hmll)->first; (cur_entry) != NULL; \ + (cur_entry) = (cur_entry)->next) { \ code \ } \ @@ -1072,13 +1072,13 @@ static inline bool marks_equal(const pos_T a, const pos_T b) entry, fname_cond, free_func, fin_func, \ idxadj_func, afterfree_func) \ do { \ - const int jl_len = (int)jumps_size; \ + const int jl_len = (int)(jumps_size); \ int i; \ for (i = jl_len; i > 0; i--) { \ - const jumps_type jl_entry = jumps[i - 1]; \ - if (jl_entry.timestamp_attr <= entry.timestamp) { \ - if (marks_equal(jl_entry.mark_attr, entry.data.filemark.mark) \ - && fname_cond) { \ + const jumps_type jl_entry = (jumps)[i - 1]; \ + if (jl_entry.timestamp_attr <= (entry).timestamp) { \ + if (marks_equal(jl_entry.mark_attr, (entry).data.filemark.mark) \ + && (fname_cond)) { \ i = -1; \ } \ break; \ @@ -1086,30 +1086,30 @@ static inline bool marks_equal(const pos_T a, const pos_T b) } \ if (i > 0) { \ if (jl_len == JUMPLISTSIZE) { \ - free_func(jumps[0]); \ + free_func((jumps)[0]); \ i--; \ if (i > 0) { \ - memmove(&jumps[0], &jumps[1], sizeof(jumps[1]) * (size_t)i); \ + memmove(&(jumps)[0], &(jumps)[1], sizeof((jumps)[1]) * (size_t)i); \ } \ } else if (i != jl_len) { \ - memmove(&jumps[i + 1], &jumps[i], \ - sizeof(jumps[0]) * (size_t)(jl_len - i)); \ + memmove(&(jumps)[i + 1], &(jumps)[i], \ + sizeof((jumps)[0]) * (size_t)(jl_len - i)); \ } \ } else if (i == 0) { \ if (jl_len == JUMPLISTSIZE) { \ i = -1; \ } else if (jl_len > 0) { \ - memmove(&jumps[1], &jumps[0], sizeof(jumps[0]) * (size_t)jl_len); \ + memmove(&(jumps)[1], &(jumps)[0], sizeof((jumps)[0]) * (size_t)jl_len); \ } \ } \ if (i != -1) { \ - jumps[i] = fin_func(entry); \ + (jumps)[i] = fin_func(entry); \ if (jl_len < JUMPLISTSIZE) { \ - jumps_size++; \ + (jumps_size)++; \ } \ idxadj_func(i); \ } else { \ - shada_free_shada_entry(&entry); \ + shada_free_shada_entry(&(entry)); \ afterfree_func(entry); \ } \ } while (0) @@ -1304,7 +1304,7 @@ static void shada_read(ShaDaReadDef *const sd_reader, const int flags) } else { #define SDE_TO_XFMARK(entry) fm #define ADJUST_IDX(i) \ - if (curwin->w_jumplistidx >= i \ + if (curwin->w_jumplistidx >= (i) \ && curwin->w_jumplistidx + 1 <= curwin->w_jumplistlen) { \ curwin->w_jumplistidx++; \ } @@ -1547,7 +1547,7 @@ static ShaDaWriteResult shada_pack_entry(msgpack_packer *const packer, ShadaEntr } \ } while (0) #define CHECK_DEFAULT(entry, attr) \ - (sd_default_values[entry.type].data.attr == entry.data.attr) + (sd_default_values[(entry).type].data.attr == (entry).data.attr) #define ONE_IF_NOT_DEFAULT(entry, attr) \ ((size_t)(!CHECK_DEFAULT(entry, attr))) switch (entry.type) { @@ -1637,7 +1637,7 @@ static ShaDaWriteResult shada_pack_entry(msgpack_packer *const packer, ShadaEntr do { \ if (!CHECK_DEFAULT(entry, search_pattern.attr)) { \ PACK_STATIC_STR(name); \ - if (sd_default_values[entry.type].data.search_pattern.attr) { \ + if (sd_default_values[(entry).type].data.search_pattern.attr) { \ msgpack_pack_false(spacker); \ } else { \ msgpack_pack_true(spacker); \ @@ -2221,12 +2221,12 @@ static inline ShaDaWriteResult shada_read_when_writing(ShaDaReadDef *const sd_re } else { #define FREE_POSSIBLY_FREED_SHADA_ENTRY(entry) \ do { \ - if (entry.can_free_entry) { \ - shada_free_shada_entry(&entry.data); \ + if ((entry).can_free_entry) { \ + shada_free_shada_entry(&(entry).data); \ } \ } while (0) #define SDE_TO_PFSDE(entry) \ - ((PossiblyFreedShadaEntry) { .can_free_entry = true, .data = entry }) + ((PossiblyFreedShadaEntry) { .can_free_entry = true, .data = (entry) }) #define AFTERFREE_DUMMY(entry) #define DUMMY_IDX_ADJ(i) MERGE_JUMPS(filemarks->changes_size, filemarks->changes, @@ -2814,8 +2814,8 @@ static ShaDaWriteResult shada_write(ShaDaWriteDef *const sd_writer, ShaDaReadDef #define PACK_WMS_ARRAY(wms_array) \ do { \ for (size_t i_ = 0; i_ < ARRAY_SIZE(wms_array); i_++) { \ - if (wms_array[i_].data.type != kSDItemMissing) { \ - if (shada_pack_pfreed_entry(packer, wms_array[i_], max_kbyte) \ + if ((wms_array)[i_].data.type != kSDItemMissing) { \ + if (shada_pack_pfreed_entry(packer, (wms_array)[i_], max_kbyte) \ == kSDWriteFailed) { \ ret = kSDWriteFailed; \ goto shada_write_exit; \ @@ -2835,7 +2835,7 @@ static ShaDaWriteResult shada_write(ShaDaWriteDef *const sd_writer, ShaDaReadDef } #define PACK_WMS_ENTRY(wms_entry) \ do { \ - if (wms_entry.data.type != kSDItemMissing) { \ + if ((wms_entry).data.type != kSDItemMissing) { \ if (shada_pack_pfreed_entry(packer, wms_entry, max_kbyte) \ == kSDWriteFailed) { \ ret = kSDWriteFailed; \ @@ -3312,16 +3312,16 @@ static ShaDaReadResult msgpack_read_uint64(ShaDaReadDef *const sd_reader, const RERR "Error while reading ShaDa file: " \ entry_name " entry at position %" PRIu64 " " \ error_desc -#define CHECK_KEY(key, expected) ( \ - key.via.str.size == sizeof(expected) - 1 \ - && STRNCMP(key.via.str.ptr, expected, sizeof(expected) - 1) == 0) +#define CHECK_KEY(key, \ + expected) ((key).via.str.size == (sizeof(expected) - 1) \ + && STRNCMP((key).via.str.ptr, expected, (sizeof(expected) - 1)) == 0) #define CLEAR_GA_AND_ERROR_OUT(ga) \ do { \ - ga_clear(&ga); \ + ga_clear(&(ga)); \ goto shada_read_next_item_error; \ } while (0) #define ID(s) s -#define BINDUP(b) xmemdupz(b.ptr, b.size) +#define BINDUP(b) xmemdupz((b).ptr, (b).size) #define TOINT(s) ((int)(s)) #define TOLONG(s) ((long)(s)) #define TOCHAR(s) ((char)(s)) @@ -3334,28 +3334,31 @@ static ShaDaReadResult msgpack_read_uint64(ShaDaReadDef *const sd_reader, const semsg(_(READERR(entry_name, error_desc)), initial_fpos); \ CLEAR_GA_AND_ERROR_OUT(ad_ga); \ } \ - tgt = proc(obj.via.attr); \ + (tgt) = proc((obj).via.attr); \ } while (0) #define CHECK_KEY_IS_STR(un, entry_name) \ - if (un.data.via.map.ptr[i].key.type != MSGPACK_OBJECT_STR) { \ + if ((un).data.via.map.ptr[i].key.type != MSGPACK_OBJECT_STR) { \ semsg(_(READERR(entry_name, "has key which is not a string")), \ initial_fpos); \ CLEAR_GA_AND_ERROR_OUT(ad_ga); \ - } else if (un.data.via.map.ptr[i].key.via.str.size == 0) { \ + } else if ((un).data.via.map.ptr[i].key.via.str.size == 0) { \ semsg(_(READERR(entry_name, "has empty key")), initial_fpos); \ CLEAR_GA_AND_ERROR_OUT(ad_ga); \ } -#define CHECKED_KEY(un, entry_name, name, error_desc, tgt, condition, attr, \ - proc) \ - else if (CHECK_KEY( /* NOLINT(readability/braces) */ \ - un.data.via.map.ptr[i].key, name)) { \ - CHECKED_ENTRY(condition, "has " name " key value " error_desc, \ - entry_name, un.data.via.map.ptr[i].val, \ - tgt, attr, proc); \ +#define CHECKED_KEY(un, entry_name, name, error_desc, tgt, condition, attr, proc) \ + else if (CHECK_KEY((un).data.via.map.ptr[i].key, name)) /* NOLINT(readability/braces) */ \ + { \ + CHECKED_ENTRY(condition, \ + "has " name " key value " error_desc, \ + entry_name, \ + (un).data.via.map.ptr[i].val, \ + tgt, \ + attr, \ + proc); \ } #define TYPED_KEY(un, entry_name, name, type_name, tgt, objtype, attr, proc) \ CHECKED_KEY(un, entry_name, name, "which is not " type_name, tgt, \ - un.data.via.map.ptr[i].val.type == MSGPACK_OBJECT_##objtype, \ + (un).data.via.map.ptr[i].val.type == MSGPACK_OBJECT_##objtype, \ attr, proc) #define BOOLEAN_KEY(un, entry_name, name, tgt) \ TYPED_KEY(un, entry_name, name, "a boolean", tgt, BOOLEAN, boolean, ID) @@ -3366,9 +3369,9 @@ static ShaDaReadResult msgpack_read_uint64(ShaDaReadDef *const sd_reader, const BIN_CONVERTED) #define INT_KEY(un, entry_name, name, tgt, proc) \ CHECKED_KEY(un, entry_name, name, "which is not an integer", tgt, \ - ((un.data.via.map.ptr[i].val.type \ + (((un).data.via.map.ptr[i].val.type \ == MSGPACK_OBJECT_POSITIVE_INTEGER) \ - || (un.data.via.map.ptr[i].val.type \ + || ((un).data.via.map.ptr[i].val.type \ == MSGPACK_OBJECT_NEGATIVE_INTEGER)), \ i64, proc) #define INTEGER_KEY(un, entry_name, name, tgt) \ @@ -3379,12 +3382,12 @@ static ShaDaReadResult msgpack_read_uint64(ShaDaReadDef *const sd_reader, const else { /* NOLINT(readability/braces) */ \ ga_grow(&ad_ga, 1); \ memcpy(((char *)ad_ga.ga_data) + ((size_t)ad_ga.ga_len \ - * sizeof(*un.data.via.map.ptr)), \ - un.data.via.map.ptr + i, \ - sizeof(*un.data.via.map.ptr)); \ + * sizeof(*(un).data.via.map.ptr)), \ + (un).data.via.map.ptr + i, \ + sizeof(*(un).data.via.map.ptr)); \ ad_ga.ga_len++; \ } -#define BIN_CONVERTED(b) (xmemdupz((b.ptr), (b.size))) +#define BIN_CONVERTED(b) (xmemdupz(((b).ptr), ((b).size))) #define SET_ADDITIONAL_DATA(tgt, name) \ do { \ if (ad_ga.ga_len) { \ @@ -3407,7 +3410,7 @@ static ShaDaReadResult msgpack_read_uint64(ShaDaReadDef *const sd_reader, const tv_clear(&adtv); \ goto shada_read_next_item_error; \ } \ - tgt = adtv.vval.v_dict; \ + (tgt) = adtv.vval.v_dict; \ } \ ga_clear(&ad_ga); \ } while (0) |