When there's a parse error in an included file, resulting in a inf_close() call to that file:
1. inf_close() gets called recursively for the including file, as per inf->included_from
2. inf_close_partial() for the included file itself does inf_sanity_check()
3. In case of FREECIV_DEBUG build, inf_sanity_check() calls itself recursively for the including file (inf->included_from)
4. As that including file was already closed in (1), the sanity check makes all kind of illegal memory accesses
When there's a parse error in an included file, resulting in a inf_close() call to that file:
1. inf_close() gets called recursively for the including file, as per inf->included_from
2. inf_close_partial() for the included file itself does inf_sanity_check()
3. In case of FREECIV_DEBUG build, inf_sanity_check() calls itself recursively for the including file (inf->included_from)
4. As that including file was already closed in (1), the sanity check makes all kind of illegal memory accesses