X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=mem.h;h=44630efc2ca6c187373e052e1754b355424e5cc7;hb=b9983db8164466ba74eaf52285fe932846fb9f05;hp=ae6957566c4d9e4f2986aa0c52222626dae53035;hpb=c693c0b0d26eac89aef4e4c6740feca3627e2d26;p=apps%2Fpfixtools.git diff --git a/mem.h b/mem.h index ae69575..44630ef 100644 --- a/mem.h +++ b/mem.h @@ -53,6 +53,19 @@ #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(goalnb) > *(allocnb)) { \ + *(allocnb) = (goalnb); \ + } else { \ + *(allocnb) = p_alloc_nr(goalnb); \ + } \ + p_realloc(pp, *(allocnb)); \ + } \ + } while (0) + #ifdef __GNUC__ # define p_delete(mem_pp) \