pool_header_t * _pool_var (p) = pool_header (P); \
uword _pool_var (l); \
\
+ STATIC_ASSERT(A==0 || ((A % sizeof(P[0]))==0) || ((sizeof(P[0]) % A) == 0), \
+ "Pool aligned alloc of incorrectly sized object"); \
_pool_var (l) = 0; \
if (P) \
_pool_var (l) = vec_len (_pool_var (p)->free_indices); \
_pool_var (l) = 0; \
if (P) \
{ \
- if (_pool_var (p)->max_elts) \
- return 0; \
- _pool_var (l) = vec_len (_pool_var (p)->free_indices); \
+ if (_pool_var (p)->max_elts) \
+ _pool_var (l) = _pool_var (p)->max_elts; \
+ else \
+ _pool_var (l) = vec_len (_pool_var (p)->free_indices); \
} \
\
/* Free elements, certainly won't expand */ \