X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-lib%2Fmem.h;h=8d904b3d7b607abaab41092a10c1bfce59742d96;hp=ca9712b5db4dad64c01e4d10ece0a5a66bad35fa;hb=0c3dc49558129951cbf0eff32b161084bfa4219e;hpb=1ee89902de184a640c171ae3285bff6882a791bd diff --git a/lib-lib/mem.h b/lib-lib/mem.h index ca9712b..8d904b3 100644 --- a/lib-lib/mem.h +++ b/lib-lib/mem.h @@ -29,6 +29,20 @@ #define p_dupstr(p, len) xmemdupstr((p), (len)) #define p_realloc(pp, count) xrealloc((void*)(pp), sizeof(**(pp)) * (count)) +#define p_alloc_nr(x) (((x) + 16) * 3 / 2) + +#define p_allocgrow(pp, goalnb, allocnb) \ + do { \ + if ((goalnb) > *(allocnb)) { \ + if (p_alloc_nr(*(allocnb)) < (goalnb)) { \ + *(allocnb) = (goalnb); \ + } else { \ + *(allocnb) = p_alloc_nr(*(allocnb)); \ + } \ + p_realloc(pp, *(allocnb)); \ + } \ + } while (0) + #ifdef __GNUC__ # define p_delete(mem_pp) \