X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fmempool.h;h=d16fa6e09162abe44b14dd771c42e2ad49ecb3a8;hb=7442c1c86d2210ca3ef1538115f4a0423cd2f046;hp=7290c256f6865d61f0458e882ef04ad08fc5f5b5;hpb=70398f11c811ae9acad63c31eec3611b2b7322d9;p=libucw.git diff --git a/lib/mempool.h b/lib/mempool.h index 7290c256..d16fa6e0 100644 --- a/lib/mempool.h +++ b/lib/mempool.h @@ -24,12 +24,13 @@ struct mempool { struct mempool *mp_new(uns); void mp_delete(struct mempool *); void mp_flush(struct mempool *); -void *mp_alloc(struct mempool *, uns); -void *mp_alloc_zero(struct mempool *, uns); +void *mp_alloc(struct mempool *, uns) LIKE_MALLOC; +void *mp_alloc_zero(struct mempool *, uns) LIKE_MALLOC; -static inline void *mp_alloc_fast(struct mempool *p, uns l) +static inline void * LIKE_MALLOC +mp_alloc_fast(struct mempool *p, uns l) { - byte *f = (void *) (((uns) p->free + POOL_ALIGN - 1) & ~(POOL_ALIGN - 1)); + byte *f = (void *) (((uintptr_t) p->free + POOL_ALIGN - 1) & ~(uintptr_t)(POOL_ALIGN - 1)); byte *ee = f + l; if (ee > p->last) return mp_alloc(p, l); @@ -37,7 +38,7 @@ static inline void *mp_alloc_fast(struct mempool *p, uns l) return f; } -static inline void *mp_alloc_fast_noalign(struct mempool *p, uns l) +static inline void * LIKE_MALLOC mp_alloc_fast_noalign(struct mempool *p, uns l) { byte *f = p->free; byte *ee = f + l; @@ -62,17 +63,19 @@ mp_end_string(struct mempool *p, void *stop) /* mempool-str.c */ -char *mp_strdup(struct mempool *, char *); -char *mp_multicat(struct mempool *, ...); -static inline char * +char *mp_strdup(struct mempool *, char *) LIKE_MALLOC; +void *mp_memdup(struct mempool *, void *, uns) LIKE_MALLOC; +char *mp_multicat(struct mempool *, ...) LIKE_MALLOC SENTINEL_CHECK; +static inline char * LIKE_MALLOC mp_strcat(struct mempool *mp, char *x, char *y) { return mp_multicat(mp, x, y, NULL); } +char *mp_strjoin(struct mempool *p, char **a, uns n, uns sep) LIKE_MALLOC; /* mempool-fmt.c */ -char *mp_printf(struct mempool *p, char *fmt, ...); -char *mp_vprintf(struct mempool *p, char *fmt, va_list args); +char *mp_printf(struct mempool *p, char *fmt, ...) FORMAT_CHECK(printf,2,3) LIKE_MALLOC; +char *mp_vprintf(struct mempool *p, char *fmt, va_list args) LIKE_MALLOC; #endif