The function tried to be smart and realloc only when needed, but that
only lead to hard-to find bugs where the logic would not allocate the
proper space. Remove the reallocation and prefer readability over speed
in this case.
In particular, if one iteration hit the "if (num_added == 0) add=NULL"
condition but the next group being processed had no members and set
grp_count=0, then we'd use the add pointer from last iteration that was
still NULL.