free a lot of allocated memory which is ordinarily freed during save */
| 1074 | |
| 1075 | /* free a lot of allocated memory which is ordinarily freed during save */ |
| 1076 | void |
| 1077 | freedynamicdata(void) |
| 1078 | { |
| 1079 | NHFILE *tnhfp = get_freeing_nhfile(); |
| 1080 | |
| 1081 | #if defined(UNIX) && defined(MAIL) |
| 1082 | free_maildata(); |
| 1083 | #endif |
| 1084 | free_menu_coloring(); |
| 1085 | free_invbuf(); /* let_to_name (invent.c) */ |
| 1086 | free_youbuf(); /* You_buf,&c (pline.c) */ |
| 1087 | msgtype_free(); |
| 1088 | savedsym_free(); |
| 1089 | tmp_at(DISP_FREEMEM, 0); /* temporary display effects */ |
| 1090 | purge_all_custom_entries(); |
| 1091 | #ifdef FREE_ALL_MEMORY |
| 1092 | #define free_current_level() savelev(tnhfp, -1) |
| 1093 | #define freeobjchn(X) (saveobjchn(tnhfp, &X), X = 0) |
| 1094 | #define freemonchn(X) (savemonchn(tnhfp, X), X = 0) |
| 1095 | #define freefruitchn() savefruitchn(tnhfp) |
| 1096 | #define freenames() savenames(tnhfp) |
| 1097 | #define free_killers() save_killers(tnhfp) |
| 1098 | #define free_oracles() save_oracles(tnhfp) |
| 1099 | #define free_waterlevel() save_waterlevel(tnhfp) |
| 1100 | #define free_timers(R) save_timers(tnhfp, R) |
| 1101 | #define free_light_sources(R) save_light_sources(tnhfp, R) |
| 1102 | #define free_animals() mon_animal_list(FALSE) |
| 1103 | #define discard_gamelog() save_gamelog(tnhfp); |
| 1104 | |
| 1105 | /* move-specific data */ |
| 1106 | dmonsfree(); /* release dead monsters */ |
| 1107 | /* dobjsfree(); // handled below */ |
| 1108 | alloc_itermonarr(0U); /* a request of 0 releases existing allocation */ |
| 1109 | |
| 1110 | /* level-specific data */ |
| 1111 | done_object_cleanup(); /* maybe force some OBJ_FREE items onto map */ |
| 1112 | free_current_level(); |
| 1113 | |
| 1114 | /* game-state data [ought to reorganize savegamestate() to handle this] */ |
| 1115 | free_killers(); |
| 1116 | free_timers(RANGE_GLOBAL); |
| 1117 | free_light_sources(RANGE_GLOBAL); |
| 1118 | freeobjchn(gi.invent); |
| 1119 | freeobjchn(gm.migrating_objs); |
| 1120 | freemonchn(gm.migrating_mons); |
| 1121 | freemonchn(gm.mydogs); /* ascension or dungeon escape */ |
| 1122 | /* freelevchn(); -- [folded into free_dungeons()] */ |
| 1123 | free_animals(); |
| 1124 | free_oracles(); |
| 1125 | freefruitchn(); |
| 1126 | freenames(); |
| 1127 | free_waterlevel(); |
| 1128 | free_dungeons(); |
| 1129 | free_CapMons(); |
| 1130 | free_rect(); |
| 1131 | freeroleoptvals(); /* saveoptvals(&tnhfp) */ |
| 1132 | cmdq_clear(CQ_CANNED); |
| 1133 | cmdq_clear(CQ_REPEAT); |
no test coverage detected