Index: fred2/briefingeditordlg.cpp
===================================================================
--- fred2/briefingeditordlg.cpp	(revision 9689)
+++ fred2/briefingeditordlg.cpp	(working copy)
@@ -1363,8 +1363,8 @@
 		return;
 	}
 
-	// we use ASF_EVENTMUSIC here so that it will keep the extension in place
-	m_voice_id = audiostream_open((char *)(LPCSTR) m_voice, ASF_EVENTMUSIC);
+	// changed to use ASF_VOICE since that is what will be used in game and the file may or may not have an extension - FUBAR
+	m_voice_id = audiostream_open((char *)(LPCSTR) m_voice, ASF_VOICE);
 
 	if (m_voice_id >= 0) {
 		audiostream_play(m_voice_id, 1.0f, 0);
Index: fred2/cmdbrief.cpp
===================================================================
--- fred2/cmdbrief.cpp	(revision 9689)
+++ fred2/cmdbrief.cpp	(working copy)
@@ -327,8 +327,8 @@
 		return;
 	}
 
-	// we use ASF_EVENTMUSIC here so that it will keep the extension in place
-	m_wave_id = audiostream_open((char *)(LPCSTR) m_wave_filename, ASF_EVENTMUSIC);
+	// changed to use ASF_VOICE since that is what will be used in game and the file may or may not have an extension - FUBAR
+	m_wave_id = audiostream_open((char *)(LPCSTR) m_wave_filename, ASF_VOICE);
 
 	if (m_wave_id >= 0) {
 		audiostream_play(m_wave_id, 1.0f, 0);
Index: fred2/debriefingeditordlg.cpp
===================================================================
--- fred2/debriefingeditordlg.cpp	(revision 9689)
+++ fred2/debriefingeditordlg.cpp	(working copy)
@@ -487,8 +487,8 @@
 		return;
 	}
 
-	// we use ASF_EVENTMUSIC here so that it will keep the extension in place
-	m_voice_id = audiostream_open((char *)(LPCSTR) m_voice, ASF_EVENTMUSIC);
+	// changed to use ASF_VOICE since that is what will be used in game and the file may or may not have an extension - FUBAR
+	m_voice_id = audiostream_open((char *)(LPCSTR) m_voice, ASF_VOICE);
 
 	if (m_voice_id >= 0) {
 		audiostream_play(m_voice_id, 1.0f, 0);
Index: fred2/eventeditor.cpp
===================================================================
--- fred2/eventeditor.cpp	(revision 9689)
+++ fred2/eventeditor.cpp	(working copy)

@@ -1470,8 +1478,8 @@
 		return;
 	}
 
-	// we use ASF_EVENTMUSIC here so that it will keep the extension in place
-	m_wave_id = audiostream_open((char *)(LPCSTR) m_wave_filename, ASF_EVENTMUSIC);
+	// changed to use ASF_VOICE.  Extension should be stripped not preserved since playback will be stripped in FS2_Open - FUBAR
+	m_wave_id = audiostream_open((char *)(LPCSTR) m_wave_filename, ASF_VOICE);
 
 	if (m_wave_id >= 0) {
 		audiostream_play(m_wave_id, 1.0f, 0);
Index: sound/audiostr.cpp
===================================================================
--- sound/audiostr.cpp	(revision 9689)
+++ sound/audiostr.cpp	(working copy)
@@ -461,14 +461,22 @@
 		cf_find_file_location(pszFilename, CF_TYPE_ANY, sizeof(fullpath) - 1, fullpath, &FileSize, &FileOffset);
 	}
 	// ... otherwise we just find the best match
-	else {
+	else {		
+		// check that passed filename isn't too long for the extension
+		if (strlen(filename) > MAX_FILENAME_LEN-5) {
+			Warning( LOCATION, "Passed filename, '%s', is too long to support an extension!!\n\nMaximum length, minus the extension, is %i characters.\n", filename, MAX_FILENAME_LEN-5 );
+			goto OPEN_ERROR;
+		}
 		rc = cf_find_file_location_ext(filename, NUM_EXT, audio_ext, CF_TYPE_ANY, sizeof(fullpath) - 1, fullpath, &FileSize, &FileOffset);
 	}
 
 	if (rc < 0) {
 		goto OPEN_ERROR;
-	} else {
-		// set proper filename for later use (assumes that it doesn't already have an extension)
+	} 
+
+	// set proper filename for later use (assumes that it doesn't already have an extension)
+	// and don't add one if it is supposed to already have it. - FUBAR
+	if (!keep_ext) {
 		strcat_s( filename, audio_ext[rc] );
 	}
 
