diff options
-rw-r--r-- | engines/tony/mpal/loadmpc.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/engines/tony/mpal/loadmpc.cpp b/engines/tony/mpal/loadmpc.cpp index aa048c0b2f..e222891170 100644 --- a/engines/tony/mpal/loadmpc.cpp +++ b/engines/tony/mpal/loadmpc.cpp @@ -690,7 +690,7 @@ bool ParseMpc(const byte *lpBuf) { */ static void freeDialog(LPMPALDIALOG lpmdDialog) { // Free the periods - int i; + int i, j; for (i = 0; i < MAX_PERIODS_PER_DIALOG && (lpmdDialog->_periods[i]); ++i) globalFree(lpmdDialog->_periods[i]); @@ -702,6 +702,14 @@ static void freeDialog(LPMPALDIALOG lpmdDialog) { freeExpression(lpmdDialog->_command[i].expr); } } + + // Free the choices + for (i = 0; i < MAX_CHOICES_PER_DIALOG; ++i) { + for (j = 0; j < MAX_SELECTS_PER_CHOICE; j++) { + if (lpmdDialog->_choice[i]._select[j].when) + freeExpression(lpmdDialog->_choice[i]._select[j].when); + } + } } /** |