diff --git a/src/ibt.c b/src/ibt.c index 5c7fc31..ad8b955 100755 --- a/src/ibt.c +++ b/src/ibt.c @@ -1170,3 +1170,14 @@ void free_ibt_lists() } } +void clean_ibt_list(int mode) +{ + IBT_DATA *ibtData = get_first_ibt(mode), *ibtTemp; + while (ibtData) { + ibtTemp = ibtData; + ibtData = ibtData->next; + if (!ibtTemp->body || !*ibtTemp->body) { + free_ibt(mode, ibtTemp); + } + } +} diff --git a/src/ibt.h b/src/ibt.h index 04cf9d2..8d0dc7d 100755 --- a/src/ibt.h +++ b/src/ibt.h @@ -100,3 +100,4 @@ 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); +void clean_ibt_list(int mode); diff --git a/src/modify.c b/src/modify.c index 4e96b48..8b4cf33 100644 --- a/src/modify.c +++ b/src/modify.c @@ -270,6 +270,7 @@ static void playing_string_cleanup(struct descriptor_data *d, int action) save_ibt_file(SCMD_IDEA); } else { write_to_output(d, "Idea aborted!\r\n"); + clean_ibt_list(SCMD_IDEA); } } if (PLR_FLAGGED(d->character, PLR_BUG)) { @@ -278,6 +279,7 @@ static void playing_string_cleanup(struct descriptor_data *d, int action) save_ibt_file(SCMD_BUG); } else { write_to_output(d, "Bug aborted!\r\n"); + clean_ibt_list(SCMD_BUG); } } if (PLR_FLAGGED(d->character, PLR_TYPO)) { @@ -286,6 +288,7 @@ static void playing_string_cleanup(struct descriptor_data *d, int action) save_ibt_file(SCMD_TYPO); } else { write_to_output(d, "Typo aborted!\r\n"); + clean_ibt_list(SCMD_TYPO); } } }