fixed returning from function with incomplete list pointers
[rocksndiamonds.git] / src / files.c
index 6a4c5f62623e4654fcd5441204bae12b8afc3771..676ebf8aa3d9db839d3921b76032c6fadd76e2f5 100644 (file)
@@ -3713,6 +3713,7 @@ static void CopyNativeLevel_RND_to_EM(struct LevelInfo *level)
   cav->lenses_time             = level->lenses_time;
   cav->magnify_time            = level->magnify_time;
 
+  cav->wind_time = 9999;
   cav->wind_direction =
     map_direction_RND_to_EM(level->wind_direction_initial);
 
@@ -12943,6 +12944,7 @@ void LoadMusicInfo(void)
   DirectoryEntry *dir_entry;
   struct FileInfo *music, *sound;
   struct MusicFileInfo *next, **new;
+  boolean read_music_from_directory = TRUE;
   int i;
 
   while (music_file_info != NULL)
@@ -12995,10 +12997,11 @@ void LoadMusicInfo(void)
   {
     Warn("cannot read music directory '%s'", music_directory);
 
-    return;
+    read_music_from_directory = FALSE;
   }
 
-  while ((dir_entry = readDirectory(dir)) != NULL)     // loop all entries
+  while (read_music_from_directory &&
+        (dir_entry = readDirectory(dir)) != NULL)      // loop all entries
   {
     char *basename = dir_entry->basename;
     boolean music_already_used = FALSE;
@@ -13036,7 +13039,8 @@ void LoadMusicInfo(void)
     num_music_noconf++;
   }
 
-  closeDirectory(dir);
+  if (dir != NULL)
+    closeDirectory(dir);
 
   for (i = 0; i < num_sounds; i++)
   {