Index: lib/sound/openal_track.c
===================================================================
--- lib/sound/openal_track.c	(revision 5420)
+++ lib/sound/openal_track.c	(working copy)
@@ -279,6 +279,8 @@
 	{
 		ALenum state, err;
 
+		ASSERT(node->curr->iSample != AL_INVALID, "Trying to use source defined as invalid");
+		ASSERT(alIsSource(node->curr->iSample), "Not a valid source!");
 		alGetSourcei(node->curr->iSample, AL_SOURCE_STATE, &state);
 
 		// Check whether an error occurred while retrieving the state.
@@ -365,8 +367,25 @@
 
 	if (current_queue_sample != (ALuint)AL_INVALID)
 	{
+		SAMPLE_LIST* node = active_samples;
+		SAMPLE_LIST* previous = NULL;
+
 		alDeleteSources(1, &current_queue_sample);
 		sound_GetError();
+
+		// We need to remove it from the queue of actively played samples
+		while (node != NULL)
+		{
+			if (node->curr->iSample == current_queue_sample)
+			{
+				sound_DestroyIteratedSample(&previous, &node);
+			}
+			previous = node;
+			if (node)
+			{
+				node = node->next;
+			}
+		}
 		current_queue_sample = AL_INVALID;
 	}
 #endif
