diff --git a/fred2/eventeditor.cpp b/fred2/eventeditor.cpp index 15a65bbfc04..a0e2e083e5e 100644 --- a/fred2/eventeditor.cpp +++ b/fred2/eventeditor.cpp @@ -43,6 +43,21 @@ event_editor *Event_editor_dlg = NULL; // global reference needed by event tree // this is just useful for comparing modified EAs to unmodified ones static event_annotation default_ea; +int safe_stricmp(const char* one, const char* two) +{ + if (!one && !two) + return 0; + + if (!one) + return -1; + + if (!two) + return 1; + + return stricmp(one, two); +} + + ///////////////////////////////////////////////////////////////////////////// // event_editor dialog @@ -448,17 +463,15 @@ void event_editor::OnOK() int event_editor::query_modified() { - int i; - char *ptr, buf[MESSAGE_LENGTH]; - UpdateData(TRUE); + if (modified) return 1; if (Mission_events.size() != m_events.size()) return 1; - for (i=0; i<(int)m_events.size(); i++) { + for (size_t i = 0; i < m_events.size(); ++i) { if (!lcase_equal(m_events[i].name, Mission_events[i].name)) return 1; if (m_events[i].repeat_count != Mission_events[i].repeat_count) @@ -481,47 +494,30 @@ int event_editor::query_modified() return 1; } - if (m_cur_msg < 0) - return 0; - - if ((int)m_messages.size() != Num_messages - Num_builtin_messages) + if (static_cast(m_messages.size()) != Num_messages - Num_builtin_messages) { return 1; + } - ptr = (char *) (LPCTSTR) m_message_name; - for (i=0; i(m_messages.size()) != Num_messages - Num_builtin_messages) { return true; } - for (auto i = 0; i < (int)m_messages.size(); ++i) { + for (size_t i = 0; i < m_messages.size(); ++i) { auto& local = m_messages[i]; - auto& ref = Messages[i]; + auto& ref = Messages[Num_builtin_messages + i]; if (stricmp(local.name, ref.name) != 0) { return true; @@ -718,16 +721,19 @@ bool EventEditorDialog::query_modified() { if (stricmp(local.message, ref.message) != 0) { return true; } + if (!lcase_equal(local.note, ref.note)) { + return true; + } if (local.persona_index != ref.persona_index) { return true; } if (local.multi_team != ref.multi_team) { return true; } - if (safe_stricmp(local.avi_info.name, ref.avi_info.name)) { + if (safe_stricmp(local.avi_info.name, ref.avi_info.name) != 0) { return true; } - if (safe_stricmp(local.wave_info.name, ref.avi_info.name)) { + if (safe_stricmp(local.wave_info.name, ref.avi_info.name) != 0) { return true; } }