+#define GROW(Buffer, Added, Len, Size) \
+ do { \
+ const int required_size = (Len) + (Added); \
+ int next_size = (Size); \
+ if (next_size >= required_size) { \
+ break; \
+ } \
+ do { \
+ next_size = p_alloc_nr(next_size); \
+ } while (next_size < required_size); \
+ p_allocgrow(&(Buffer), next_size, &(Size)); \
+ } while(0)
+