memory leak in ibt fixed

This commit is contained in:
Thomas Arp 2011-03-10 22:34:46 +00:00
parent d74b07d8f5
commit 48578939c5
3 changed files with 26 additions and 0 deletions

View file

@ -877,6 +877,25 @@ static void ibtedit_save(struct descriptor_data *d)
save_ibt_file(OLC_VAL(d));
}
void free_olc_ibt(IBT_DATA *toFree) {
if (!toFree)
return;
if (toFree->text) {
STRFREE(toFree->text);
}
if (toFree->body) {
STRFREE(toFree->body);
}
if (toFree->name) {
STRFREE(toFree->name);
}
if (toFree->notes) {
STRFREE(toFree->notes);
}
free(toFree);
}
/*-------------------------------------------------------------------*/
/* main ibtedit menu function... */
static void ibtedit_disp_main_menu(struct descriptor_data *d)

View file

@ -98,3 +98,4 @@ void load_ibt_file(int mode);
void ibtedit_parse(struct descriptor_data *d, char *arg);
void ibtedit_string_cleanup(struct descriptor_data *d, int terminator);
void free_ibt_lists();
void free_olc_ibt(IBT_DATA *toFree);

View file

@ -25,6 +25,7 @@
#include "act.h"
#include "handler.h" /* for is_name */
#include "quest.h"
#include "ibt.h"
/* Internal Data Structures */
@ -174,6 +175,11 @@ void cleanup_olc(struct descriptor_data *d, byte cleanup_type)
}
}
if (OLC_IBT(d)) {
free_olc_ibt(OLC_IBT(d));
OLC_IBT(d) = NULL;
}
/* Free storage if allocated (tedit, aedit, and trigedit). This is the command
* list - it's been copied to disk already, so just free it -Welcor. */
if (OLC_STORAGE(d)) {