Index: client/audio.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/audio.c,v
retrieving revision 1.7
diff -u -r1.7 audio.c
--- client/audio.c	2002/05/24 07:59:05	1.7
+++ client/audio.c	2002/06/21 18:50:16
@@ -17,6 +17,7 @@
 
 #include <string.h>
 #include <assert.h>
+#include <stdlib.h>
 
 #include "support.h"
 #include "fcintl.h"
@@ -76,6 +77,8 @@
 
   if (found && i != selected_plugin) {
     freelog(LOG_DEBUG, "Shutting down %s", plugins[selected_plugin].name);
+    plugins[selected_plugin].stop();
+    plugins[selected_plugin].wait();
     plugins[selected_plugin].shutdown();
   }
 
@@ -163,6 +166,8 @@
     exit(EXIT_FAILURE);
   }
 
+  atexit(audio_shutdown);
+
   if (prefered_plugin_name && audio_select_plugin(prefered_plugin_name)) {
     return;
   }
@@ -261,8 +266,10 @@
   audio_play_sound("e_game_quit", NULL);
   plugins[selected_plugin].wait();
   plugins[selected_plugin].shutdown();
+
   if (tagfile) {
     section_file_free(tagfile);
+    tagfile = NULL;
   }
 }
 
Index: client/civclient.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/civclient.c,v
retrieving revision 1.134
diff -u -r1.134 civclient.c
--- client/civclient.c	2002/06/07 04:25:58	1.134
+++ client/civclient.c	2002/06/21 18:50:16
@@ -216,7 +216,6 @@
 
   /* termination */
   attribute_flush();
-  audio_shutdown();
   my_shutdown_network();
 
   exit(EXIT_SUCCESS);