From: Pietro Cerutti Date: Wed, 7 Aug 2019 13:58:03 +0000 (+0000) Subject: Use mutt memory primitives in rxi-vec X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=315bbd945e090954cd36d3fc0bd20da48b8c2904;p=neomutt Use mutt memory primitives in rxi-vec --- diff --git a/addrbook.c b/addrbook.c index aca4152ec..1d79a07f7 100644 --- a/addrbook.c +++ b/addrbook.c @@ -231,8 +231,7 @@ new_aliases: menu->max++; } - if (vec_reserve(&alias_table, menu->max) == -1) - return; + vec_reserve(&alias_table, menu->max); menu->data = &alias_table; diff --git a/rxi-vec/vec.c b/rxi-vec/vec.c index 399104e90..ae251d03d 100644 --- a/rxi-vec/vec.c +++ b/rxi-vec/vec.c @@ -6,70 +6,55 @@ */ #include "vec.h" +#include "mutt/memory.h" -int vec_expand_(char **data, int *length, int *capacity, int memsz) { +void vec_expand_(char **data, int *length, int *capacity, int memsz) { if (*length + 1 > *capacity) { - void *ptr; int n = (*capacity == 0) ? 1 : *capacity << 1; - ptr = realloc(*data, n * memsz); - if (ptr == NULL) return -1; - *data = ptr; + mutt_mem_realloc(data, n * memsz); *capacity = n; } - return 0; } -int vec_reserve_(char **data, int *length, int *capacity, int memsz, int n) { +void vec_reserve_(char **data, int *length, int *capacity, int memsz, int n) { (void) length; if (n > *capacity) { - void *ptr = realloc(*data, n * memsz); - if (ptr == NULL) return -1; - *data = ptr; + mutt_mem_realloc(data, n * memsz); *capacity = n; } - return 0; } -int vec_reserve_po2_( - char **data, int *length, int *capacity, int memsz, int n -) { +void vec_reserve_po2_(char **data, int *length, int *capacity, int memsz, int n) { int n2 = 1; - if (n == 0) return 0; + if (n == 0) return; while (n2 < n) n2 <<= 1; - return vec_reserve_(data, length, capacity, memsz, n2); + vec_reserve_(data, length, capacity, memsz, n2); } -int vec_compact_(char **data, int *length, int *capacity, int memsz) { +void vec_compact_(char **data, int *length, int *capacity, int memsz) { if (*length == 0) { - free(*data); + mutt_mem_free(*data); *data = NULL; *capacity = 0; - return 0; } else { - void *ptr; int n = *length; - ptr = realloc(*data, n * memsz); - if (ptr == NULL) return -1; + mutt_mem_realloc(data, n * memsz); *capacity = n; - *data = ptr; } - return 0; } -int vec_insert_(char **data, int *length, int *capacity, int memsz, +void vec_insert_(char **data, int *length, int *capacity, int memsz, int idx ) { - int err = vec_expand_(data, length, capacity, memsz); - if (err) return err; + vec_expand_(data, length, capacity, memsz); memmove(*data + (idx + 1) * memsz, *data + idx * memsz, (*length - idx) * memsz); - return 0; } diff --git a/rxi-vec/vec.h b/rxi-vec/vec.h index 2430611e3..46723a895 100644 --- a/rxi-vec/vec.h +++ b/rxi-vec/vec.h @@ -27,13 +27,17 @@ #define vec_deinit(v)\ - ( free((v)->data),\ - vec_init(v) ) + do { \ + free((v)->data); \ + vec_init(v); \ + } while (0) #define vec_push(v, val)\ - ( vec_expand_(vec_unpack_(v)) ? -1 :\ - ((v)->data[(v)->length++] = (val), 0), 0 ) + do { \ + vec_expand_(vec_unpack_(v)); \ + (v)->data[(v)->length++] = (val); \ + } while (0) #define vec_pop(v)\ @@ -41,18 +45,29 @@ #define vec_splice(v, start, count)\ - ( vec_splice_(vec_unpack_(v), start, count),\ - (v)->length -= (count) ) + do { \ + int s = (start); \ + int c = (count); \ + vec_splice_(vec_unpack_(v), s, c); \ + (v)->length -= c; \ + } while (0) #define vec_swapsplice(v, start, count)\ - ( vec_swapsplice_(vec_unpack_(v), start, count),\ - (v)->length -= (count) ) + do { \ + int s = (start); \ + int c = (count); \ + vec_swapsplice_(vec_unpack_(v), s, c); \ + (v)->length -= count; \ + } while (0) #define vec_insert(v, idx, val)\ - ( vec_insert_(vec_unpack_(v), idx) ? -1 :\ - ((v)->data[idx] = (val), 0), (v)->length++, 0 ) + do { \ + vec_insert_(vec_unpack_(v), idx); \ + (v)->data[idx] = (val); \ + (v)->length++; \ + } while (0) #define vec_sort(v, fn)\ @@ -156,12 +171,11 @@ -int vec_expand_(char **data, int *length, int *capacity, int memsz); -int vec_reserve_(char **data, int *length, int *capacity, int memsz, int n); -int vec_reserve_po2_(char **data, int *length, int *capacity, int memsz, - int n); -int vec_compact_(char **data, int *length, int *capacity, int memsz); -int vec_insert_(char **data, int *length, int *capacity, int memsz, +void vec_expand_(char **data, int *length, int *capacity, int memsz); +void vec_reserve_(char **data, int *length, int *capacity, int memsz, int n); +void vec_reserve_po2_(char **data, int *length, int *capacity, int memsz, int n); +void vec_compact_(char **data, int *length, int *capacity, int memsz); +void vec_insert_(char **data, int *length, int *capacity, int memsz, int idx); void vec_splice_(char **data, int *length, int *capacity, int memsz, int start, int count);