X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=mem.h;h=44630efc2ca6c187373e052e1754b355424e5cc7;hb=1c42f5f8ed1972f13424197e9493bbed8e401576;hp=de11a595578a581d740e473ee7ca8eb13c4d5410;hpb=6a966ebc32006b64216715314ce21a506ef1f7c4;p=apps%2Fpfixtools.git diff --git a/mem.h b/mem.h index de11a59..44630ef 100644 --- a/mem.h +++ b/mem.h @@ -33,8 +33,8 @@ * Copyright © 2006 Pierre Habouzit */ -#ifndef POSTLICYD_MEM_H -#define POSTLICYD_MEM_H +#ifndef PFIXTOOLS_MEM_H +#define PFIXTOOLS_MEM_H #include #include @@ -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) \ @@ -131,4 +144,4 @@ static inline void *xmemdupstr(const void *src, ssize_t len) { } \ } -#endif /* POSTLICYD_MEM_H */ +#endif /* PFIXTOOLS_MEM_H */