fc_assert_exit_msg(NULL != tileset, "Failed to re-read the currently loaded tileset.");
On FREECIV_NDEBUG builds it does not give the error message from that assert, but likely crashes in a more mysterious way. Also; clang analyzer gives warnings about those later dereferences of the NULL tileset (which is how I found this).
We should not use fc_assert there, but handle the situation also in FREECIV_NDEBUG builds.
tilespec_reread() has
fc_assert_exit_msg(NULL != tileset, "Failed to re-read the currently loaded tileset.");
On FREECIV_NDEBUG builds it does not give the error message from that assert, but likely crashes in a more mysterious way. Also; clang analyzer gives warnings about those later dereferences of the NULL tileset (which is how I found this).
We should not use fc_assert there, but handle the situation also in FREECIV_NDEBUG builds.