Yuck. I never, ever level_load either (except on startup). That's really awful. But in my game I can probably handle it with some careful level_mark and level_free, as everything created after a certain point is temporary. In your situation that obviously doesn't work.