-#define DO_REALLOC(basevar, sizevar, needed_size, type) do { \
- /* Avoid side effects by prefixing the local vars. */ \
- long do_realloc_needed_size = (needed_size); \
- long do_realloc_newsize = 0; \
- while ((sizevar) < (do_realloc_needed_size)) { \
- do_realloc_newsize = 2*(sizevar); \
- if (do_realloc_newsize < 32) \
- do_realloc_newsize = 32; \
- (sizevar) = do_realloc_newsize; \
- } \
- if (do_realloc_newsize) \
- basevar = (type *)xrealloc (basevar, do_realloc_newsize * sizeof (type)); \
-} while (0)