b91dd5b3bc
makes the code less cluttered, and it's harder to introduce leaks. this has the hypothetical disadvantage that due to freeing being delayed, the peak memory usage would rise significantly if we chained to another parse_list() call which produces a big list while already holding a big list, but that isn't the case anywhere.