use GC_realloc instead of macro