MCPcopy Index your code
hub / github.com/NetHack/NetHack / freedynamicdata

Function freedynamicdata

src/save.c:1076–1189  ·  view source on GitHub ↗

free a lot of allocated memory which is ordinarily freed during save */

Source from the content-addressed store, hash-verified

1074
1075/* free a lot of allocated memory which is ordinarily freed during save */
1076void
1077freedynamicdata(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);

Callers 4

nh_terminateFunction · 0.85
dump_weightsFunction · 0.85
do_deferred_showpathsFunction · 0.85
dump_mongenFunction · 0.85

Calls 15

get_freeing_nhfileFunction · 0.85
free_maildataFunction · 0.85
free_menu_coloringFunction · 0.85
free_invbufFunction · 0.85
free_youbufFunction · 0.85
msgtype_freeFunction · 0.85
savedsym_freeFunction · 0.85
tmp_atFunction · 0.85
purge_all_custom_entriesFunction · 0.85
dmonsfreeFunction · 0.85
alloc_itermonarrFunction · 0.85
done_object_cleanupFunction · 0.85

Tested by

no test coverage detected